Python从0到100(三十四):Python中的urllib模块使用指南
【摘要】 1. urllib模块概述在Python中,除了广泛使用的requests模块之外,urllib模块也是处理HTTP请求的重要工具。urllib模块在Python 2中分为urllib和urllib2两个模块,而在Python 3中,它们被合并为一个urllib模块。本文将重点介绍Python 3中的urllib模块及其使用方法。 2. urllib模块的基本方法介绍 2.1 urllib...

1. urllib模块概述
在Python中,除了广泛使用的requests模块之外,urllib模块也是处理HTTP请求的重要工具。urllib模块在Python 2中分为urllib和urllib2两个模块,而在Python 3中,它们被合并为一个urllib模块。本文将重点介绍Python 3中的urllib模块及其使用方法。
2. urllib模块的基本方法介绍
2.1 urllib.request.urlopen
urllib.request.urlopen方法用于发送GET请求,并获取响应。这是一个简单直接的方法,适用于获取网页内容。
import urllib.request
# 构造请求并获取响应
response = urllib.request.urlopen("http://www.baidu.com")
# 打印响应内容
print(response.read().decode('utf-8'))
2.2 urllib.request.Request
urllib.request.Request方法用于构造更复杂的请求,如自定义headers或发送POST请求。
2.2.1 构造简单请求
import urllib.request
# 构造请求对象
request = urllib.request.Request("http://www.baidu.com")
# 发送请求并获取响应
response = urllib.request.urlopen(request)
# 打印响应内容
print(response.read().decode('utf-8'))
2.2.2 传入headers参数
通过自定义headers,可以模拟浏览器行为,避免被服务器识别为爬虫。
import urllib.request
# 构造自定义headers
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.3"
}
# 构造请求对象,传入headers
request = urllib.request.Request("http://www.baidu.com", headers=headers)
# 发送请求并获取响应
response = urllib.request.urlopen(request)
# 打印响应内容
print(response.read().decode('utf-8'))
2.2.3 传入data参数
发送POST请求通常需要传递数据,urllib模块可以通过data参数实现。
import urllib.request
import urllib.parse
# 构造自定义headers
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.3"
}
# 构造请求数据字典
data = {
"email": "mr_mao_hacker@163.com",
"password": "alarmchime"
}
# 对请求数据字典编码为bytes类型
data = urllib.parse.urlencode(data).encode('utf-8')
# 构造请求对象,传入url、data和headers
request = urllib.request.Request('http://www.renren.com/PLogin.do', data=data, headers=headers)
# 发送请求并获取响应
resp = urllib.request.urlopen(request)
# 打印响应内容
print(resp.read().decode('utf-8'))
2.3 response.read()
response.read()方法用于获取服务器响应的内容。响应内容通常是以bytes形式存在,可以通过decode()方法转换为字符串。
import urllib.request
# 构造请求对象
request = urllib.request.Request("http://www.baidu.com")
# 发送请求并获取响应
response = urllib.request.urlopen(request)
# 打印响应内容,bytes类型
print(response.read())
# 打印响应内容,转换为str类型
print(response.read().decode('utf-8'))
3. 总结
urllib模块是Python标准库中处理HTTP请求的重要组件。通过urllib.request子模块,我们可以构造各种HTTP请求,包括GET和POST,并能够自定义headers和发送数据。掌握urllib模块的使用,对于进行网络编程和数据爬取具有重要意义。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)