python最强大的网络库requests
目录
如果你写爬虫requests配上Beatifulsoup那简直完美(小型爬虫)。
特点
- Keep-Alive & 连接池
- 国际化域名和 URL
- 带持久 Cookie 的会话
- 浏览器式的 SSL 认证
- 自动内容解码
- 基本/摘要式的身份认证
- 优雅的 key/value Cookie
- 自动解压
- Unicode 响应体
- HTTP(S) 代理支持
- 文件分块上传
- 流下载
- 连接超时
- 分块请求
- 支持 .netrc
安装
使用pip
python3: pip3 install requests
python2: pip install requests
下载源码
git clone git://github.com/kennethreitz/requests.git
cd requests
pip/pip3 install .
简单使用
说明:本章使用的是python3
import requests
res = requests.get('https://litets.com')
print(res.status_code) # 状态码
print(res.headers['content-type']) # 响应header
print(res.encoding) # 编码
print(res.text) # 内容,文本形式
其他还有:
res = requests.post('http://xxxx', data={'key':'value'})
res = requests.put('http://xxxx', data={'key':'value'})
res = requests.delete('http://xxxx')
res = requests.head('http://xxxx')
res = requests.options('http://xxxx')
请求
使用get请求时我们需要在url后面拼接参数,但是requests和post很相似,他在内部封装好了
params={'key':'value','key1':'value1'}
res = requests.get('https://xxx', params=params)
如此即可,然后我们打印一下,
print(res.url)
https://xxx?key=value&key1=value1
字典里为None的值不会被加到,url里面。 字典里的value还可以是列表。
payload = {'key1': 'value1', 'key2': ['value2', 'value3']}
r = requests.get('http://xxx', params=payload)
print(r.url)
http://xxx?key1=value1&key2=value2&key2=value3
响应
上面我们讲了请求的发送,接下来看看响应。
import requests
res = requests.get('https://litets.com')
print(res.text)
requests会自动解码服务的内容,比如编码格式,gzip等。 同时也可以使用res.encoding='utf-8’来修改编码格式。 上面的res.text主要是文本(string),如果想要获取到二进制响应内容需要使用另个api
res.content #类似java的byte
JSON响应
由于json的简单方便,现在在日常开发中已经不可或缺,对于requests,要想使用json那也很容易。
import requests
res = requests.get('http://xxx/json')
res.json()
这样requests会使用内置的json解析器解析,如果解码失败,会抛出一个异常ValueError: No JSON object could be decoded。
阅读原文:https://litets.com/article/2019/3/20/59.html
本文收藏来自互联网,用于学习研究,著作权归原作者所有,如有侵权请联系删除
markdown @tsingchan
部分引用格式为收藏注解,比如本句就是注解,非作者原文。