urllib是python内置的HTTP请求库
主要包括以下四大模块:
No. | 模块 | 功能 |
---|---|---|
1 | urllib.request |
请求模块 |
2 | urllib.error |
异常处理模块 |
3 | urllib.parse |
url解析模块 |
4 | urllib.robotparser |
robots.txt解析模块 |
最简单的爬虫例子(请求方式为GET
)
import urllib.request
# 发送请求到baidu,获取响应
response = urllib.request.urlopen('http://www.baidu.com')
# 读取响应信息(编码方式为utf-8),并打印出来
print(response.read().decode('utf-8'))
-
urllib.request.urlopen
函数说明
urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None)
主要使用前三个参数
No. | 参数 | 含义 |
---|---|---|
1 | url |
请求URL |
2 | data |
请求体 |
3 | timeout |
超时时间 |
请求方式为POST
import urllib.parse
import urllib.request
# 请求头
data = bytes(urllib.parse.urlencode({'word': 'hello'}), encoding='utf8')
print(data)
# 发送请求并获取响应
response = urllib.request.urlopen('http://httpbin.org/post', data=data)
print(response.read())
注意
-
bytes(urllib.parse.urlencode())
将POST
数据进行转换放到urllib.request.urlopen
的data
参数中。 - 函数
urllib.request.urlopen()
是通过有无data
参数决定请求方式是GET
还是POST
。
扩展
- 获取更多响应信息
No. | 函数 | 功能 |
---|---|---|
1 | response.status |
获取状态码 |
2 | response.getheaders().response.getheader("server") |
获取响应头 |
3 | response.read() |
获取响应体 |
如何设置请求头在下面具体实战中介绍。
网友评论