前言
Python 爬虫开发中,Requests 是一个核心工具。它由 Kenneth Reitz 开发,自我定义为 HTTP for Humans,旨在让 HTTP 服务更人性化。
尽管听上去有些自大,但实际上它的的确确配得上这个评价,用过的都说好。开发效率的提升是显著的。
我们先来看看它官网上的说法:
对于 Requests,要做的仅仅是两件事:
- 告诉你有这样一个工具,用来开发爬虫很轻松
- 告诉你它的官方文档很好,你去读就可以了
到此为止,本篇的目的已经达到。不过为了更有说服力,以及照顾到一些暂时还不需要但以后可能会去看的同学,我还是再啰嗦几句,演示下 Requests 的威力。
安装
pip install requests
请求网页
import requests
r = requests.get('http://httpbin.org/get')
print(r.status_code)
print(r.encoding)
print(r.text)
print(r.json())
只需一行代码就可以完成 HTTP 请求。然后轻松获取状态码、编码、内容,甚至按 JSON 格式转换数据。虽然这种简单请求用别的库也不复杂,但其实在内部,Requests 已帮你完成了添加 headers、自动解压缩、自动解码等操作。写过课程中'查天气'的同学,很可能踩过 gzip 压缩的坑,用 Requests 就不存在了。如果你发现获取的内容编码不对,也只需要直接给 encoding 赋值正确的编码后再访问 text,就自动完成了编码转换,非常方便。
想要下载一张图片:
r = requests.get("https://www.baidu.com/img/bd_logo1.png")
with open('image.png', 'wb') as f:
f.write(r.content)
把返回结果的 content 保存在文件里就行了。
提交一个 POST 请求,同时增加请求头、cookies、代理等信息(此处使用的代理地址不是真实的,测试代码时需去掉):
import requests
url = 'http://httpbin.org/post'
cookies = dict(some_cookie='working')
headers = {'user-agent': 'chrome'}
proxies = {
'http':'http://10.10.1.10:3128',
'https':'http://10.10.1.10:1080',
}
data = {'key1': 'value1', : }
r = requests.post(
url,
data=data,
cookies=cookies,
proxies=proxies,
headers=headers
)
(r.text)


