Requests 库
流式上传
使用 .post() 方法可以上传文件。
with open('massive-body') as f:
requests.post('http://some.url/streamed', data=f)
注意:强烈建议你用二进制模式(binary mode)打开文件。这是因为 requests 可能会为你提供 header 中的 Content-Length,在这种情况下该值会被设为文件的字节数。如果你用文本模式打开文件,就可能碰到错误。
代理
- 如果需要使用代理,你可以通过为任意请求方法提供 proxies 参数来配置单个请求:
import requests
proxies = {
"http": "http://10.10.1.10:3128",
"https": "http://10.10.1.10:1080",
}
requests.get("http://example.org", proxies=proxies)
- 你也可以通过环境变量 HTTP_PROXY 和 HTTPS_PROXY 来配置代理。
$ export HTTP_PROXY="http://10.10.1.10:3128"
$ export HTTPS_PROXY="http://10.10.1.10:1080"
然后,你直接运行函数就行,不用再声明。
3. 若你的代理需要使用HTTP Basic Auth,可以使用 http://user:password@host/ 语法:
proxies = {
"http": "http://user:pass@10.10.1.10:3128/",
}
注意:代理 URL 必须包含连接方式。
身份认证
如果让问网站的时候,需要登录,还有使用 HTTP Basic Auth 。
import requests
from requests.suth import HTTPBasticAuth
r = requests.get("http://example.org", auth=HTTPBasticAuth('username', 'password'))
或者,你可以用一种简便一点的写法。直接传一个元祖给auth属性就行了。
import requests
r = requests.get("http://example.org", auth=('username', 'password'))