Python中urllib模块用法实例详解
urllib模块简介
urllib模块是Python自带的用于处理URL请求的模块。该模块包含四个子模块,分别是:
- urllib.request: 用于发送HTTP请求以及接收HTTP响应,支持各种HTTP协议的请求,例如GET、POST、PUT、DELETE等;
- urllib.error: 包含urllib.request模块中出现的异常类;
- urllib.parse: 用于解析URL,支持URL的拼接、转义以及解析;
- urllib.robotparser: 用于解析robots.txt文件,可以判断某个网站是否允许爬取。
urllib.request模块
在这篇攻略中,我们将重点介绍urllib.request模块的使用方法。
发送GET请求
使用urllib.request模块发送一个简单的GET请求,只需要传入请求的URL即可:
import urllib.request
response = urllib.request.urlopen("http://www.baidu.com")
print(response.read().decode('utf-8'))
执行该段代码,将输出百度首页的HTML源码。其中,urlopen
方法返回一个HTTPResponse
对象,可以使用该对象的read
方法读取响应内容。
发送POST请求
使用urllib.request模块发送POST请求,需要传入一个bytes
对象作为请求体,该对象包含POST请求中要上传的数据。同时,还需要设置相应的HTTP头信息。
以下是一个简单的发送POST请求的例子:
import urllib.parse
import urllib.request
data = urllib.parse.urlencode({'name': '张三', 'age': 18}).encode('utf-8')
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36',
'Referer': 'http://www.baidu.com'
}
req = urllib.request.Request(url='http://localhost:8080/post', data=data, headers=headers, method='POST')
response = urllib.request.urlopen(req)
print(response.read().decode('utf-8'))
以上代码中,我们使用urllib.parse.urlencode
方法将一个字典对象编码成application/x-www-form-urlencoded
格式的字符串,并将其转换为bytes
对象。接下来,我们设置HTTP头信息,可以设置User-Agent、Referer等信息。最后,我们通过urllib.request.Request对象发送POST请求,其中传入了URL、数据、HTTP头以及请求方法。最后,我们读取响应内容并解码成字符串输出。
总结
本篇攻略介绍了urllib模块中urllib.request子模块的用法,包括发送GET、POST请求。值得注意的是,在实际应用中,需要注意HTTP头信息、响应状态码以及异常处理等问题。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python中urllib模块用法实例详解 - Python技术站