Python提供了一系列的网络协议,其中HTTP(Hypertext Transfer Protocol)是最常用的网络协议。Python提供了一个内置的模块urllib,可以用来发送HTTP请求。
urllib模块提供了4个模块,分别是:urllib.request,urllib.error,urllib.parse,urllib.robotparser。
其中,urllib.request模块提供了最基本的HTTP功能,包括:发送请求,接收响应,设置HTTP头部,设置代理等。
urllib.error模块提供了HTTP错误处理功能。
urllib.parse模块提供了URL解析功能,可以把一个URL拆分成各个组成部分,也可以把各个组成部分合并成一个URL。
urllib.robotparser模块提供了网站的robots.txt解析功能,可以获取网站的抓取策略。
发送HTTP请求的基本用法如下:
import urllib.request url = 'http://www.example.com' # 发送请求 response = urllib.request.urlopen(url) # 读取响应数据 data = response.read() # 关闭响应 response.close()
上面的代码导入urllib.request模块,使用urlopen()函数发送HTTP请求,读取响应数据,关闭响应。
可以使用urllib.request.Request对象来设置HTTP头部,使用方法如下:
import urllib.request url = 'http://www.example.com' # 设置HTTP头部 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36' } request = urllib.request.Request(url, headers=headers) # 发送请求 response = urllib.request.urlopen(request) # 读取响应数据 data = response.read() # 关闭响应 response.close()
上面的代码定义了一个字典headers,用来设置HTTP头部,使用urllib.request.Request创建一个Request对象,将headers作为参数传入,使用urlopen()函数发送请求,读取响应数据,关闭响应。
可以使用urllib.request.ProxyHandler对象来设置代理,使用方法如下:
import urllib.request url = 'http://www.example.com' # 设置代理 proxy_handler = urllib.request.ProxyHandler({ 'http': 'http://127.0.0.1:8080', 'https': 'https://127.0.0.1:8080' }) # 创建代理处理器 opener = urllib.request.build_opener(proxy_handler) # 发送请求 response = opener.open(url) # 读取响应数据 data = response.read() # 关闭响应 response.close()
上面的代码定义了一个字典proxy_handler,用来设置代理,使用urllib.request.build_opener()函数创建一个代理处理器,将proxy_handler作为参数传入,使用opener.open()函数发送请求,读取响应数据,关闭响应。
本文介绍了Python中发送HTTP请求的基本用法,介绍了urllib模块提供的4个模块,以及如何使用urllib.request模块来发送HTTP请求,以及如何使用urllib.request.Request对象来设置HTTP头部,以及如何使用urllib.request.ProxyHandler对象来设置代理。
本文链接:http://task.lmcjl.com/news/7552.html