【Python快速上手(二十六)】- Python3网络编程(下)

发布于:2024-05-24 ⋅ 阅读:(146) ⋅ 点赞:(0)

目录

  • 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 进行网络编程。