目录
- Python快速上手(二十六)- Python3网络编程(下)
-
- Python3 网络编程
-
- 4. HTTP 编程
-
- 4.1 HTTP 客户端
- 4.2 HTTP 服务器
- 5. 网络协议处理
-
- 5.1 URL 处理
- 5.2 FTP 客户端
- 6. 实际应用案例
-
- 6.1 网络爬虫
- 6.2 聊天程序
- 7. 总结
Python快速上手(二十六)- Python3网络编程(下)
Python3 网络编程
网络编程是计算机科学的重要组成部分,Python 提供了强大的标准库支持,使得网络编程变得简单而高效。 Python3 中的网络编程,包括基础概念、常用模块、客户端编程、服务器编程、网络协议处理以及实际应用案例。
4. HTTP 编程
HTTP 编程是网络编程中的一个重要部分,Python 提供了 http 模块和第三方库 requests 来简化 HTTP 客户端和服务器编程。
4.1 HTTP 客户端
使用 requests 库可以方便地进行 HTTP 请求。
import requests
def http_client():
url = 'http://httpbin.org/get'
response = requests.get(url)
print('Response:', response.text)
http_client()
4.2 HTTP 服务器
使用 http.server 模块可以快速搭建一个简单的 HTTP 服务器。
from http.server import BaseHTTPRequestHandler, HTTPServer
class SimpleHTTPRequestHandler(BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(200)
self.send_header('Content-type', 'text/html')
self.end_headers()
self.wfile.write(b'Hello, world!')
def run_server():
server_address = ('', 8080)
httpd = HTTPServer(server_address, SimpleHTTPRequestHandler)
print('Server is running on port 8080...')
httpd.serve_forever()
run_server()
5. 网络协议处理
5.1 URL 处理
Python 提供了 urllib 模块来处理 URL。
from urllib.parse import urlparse, parse_qs
url = 'http://example.com/path?name=John&age=30'
parsed_url = urlparse(url)
print('Scheme:', parsed_url.scheme)
print('Netloc:', parsed_url.netloc)
print('Path:', parsed_url.path)
print('Query:', parsed_url.query)
query_params = parse_qs(parsed_url.query)
print('Query parameters:', query_params)
5.2 FTP 客户端
使用 ftplib 模块可以方便地进行 FTP 操作。
from ftplib import FTP
def ftp_client():
ftp = FTP('ftp.example.com')
ftp.login(user='username', passwd='password')
ftp.cwd('/path/to/directory')
ftp.retrlines('LIST')
ftp.quit()
ftp_client()
6. 实际应用案例
6.1 网络爬虫
使用 requests 和 BeautifulSoup 库可以实现简单的网络爬虫。
import requests
from bs4 import BeautifulSoup
def web_crawler():
url = 'http://example.com'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
for link in soup.find_all('a'):
print('Link:', link.get('href'))
web_crawler()
6.2 聊天程序
以下是一个简单的聊天程序示例,使用 TCP 套接字实现。
服务器端
import socket
import threading
def handle_client(client_socket):
while True:
try:
message = client_socket.recv(1024).decode('utf-8')
if not message:
break
print('Received:', message)
client_socket.sendall(f'Echo: {message}'.encode('utf-8'))
except:
break
client_socket.close()
def chat_server():
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('localhost', 8080))
server_socket.listen(5)
print('Server is listening on port 8080...')
while True:
client_socket, client_address = server_socket.accept()
print('Connection from', client_address)
threading.Thread(target=handle_client, args=(client_socket,)).start()
chat_server()
客户端
import socket
def chat_client():
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(('localhost', 8080))
while True:
message = input('You: ')
if message.lower() == 'exit':
break
client_socket.sendall(message.encode('utf-8'))
response = client_socket.recv(1024).decode('utf-8')
print('Server:', response)
client_socket.close()
chat_client()
7. 总结
Python3 提供了强大的网络编程支持,从低层次的套接字编程到高级的 HTTP 编程,以及处理各种网络协议的模块。在实际应用中,网络编程广泛用于数据传输、网络爬虫、服务器开发等场景。本文详细介绍了 Python3 中网络编程的基础知识、常用模块、客户端和服务器编程、网络协议处理以及一些实际应用案例,希望能帮助读者更好地理解和应用 Python3 进行网络编程。