Requests
是一个实用、简单、强大的Python HTTP客户端库,编写爬虫和测试服务器响应数据时经常会用到。Requests 能够完全满足如今网络的需求。接下来我们从最基本的get post 请求开始 到高级特性一步一个脚印去学习。学习是个渐进的过程,只有脚踏实地不断的去练习才能掌握这些重要的知识点。
一、发送请求 get /post
按照规例首先要导入Requests模块》》》
import requests
r=requests.get(‘https://www.baidu.com‘)
r=requests.post(‘http://httpbin.org/post‘,data={‘key‘:‘value‘})
以上就短短这么一行代码就完成了get/post请求,漂亮优雅对吧,当然这只是requests的冰山一角。
二、传递参数
在大型的系统项目中,我们的url不会是这么简单,往往是要传很多查询的参数,一般都是以键值对的方式写在url后面(以get请求为例子),例如https://www.baidu.com/get?key=val&name=Myname
Requests允许我们使用params关键字使用字典来传参,例如:
pram={‘key1‘:‘val1‘,‘key2‘:‘val2‘}
r=requests.get(‘https://www.baidu.com/get‘,params=pram)
print(r.url)---打印出来的是https://www.baidu.com/get?key1=val1&key2=val2
除了以上我们还可以将一个列表传进去:
pram={‘key1‘:‘val1‘,‘key2‘:‘val2‘,‘list‘:[value1,value2]}
r=requests.get(‘https://www.baidu.com/get‘,params=pram)
print(r.url)---打印出来的是https://www.baidu.com/get?key1=val1&key2=val2&list=value1&list=value2
以上是关于get请求传参的样例---post传参也是同样操作r=requests.post(‘https://www.baidu.com/get‘,data=pram)。
三、获取响应内容
r=requests.get(‘https://www.baidu.com/‘)
r.text(文本响应内容)或r.content(二进制响应内容)或r.content.json()(json响应内容);在一般情况下获取的图片、mp3.....需要保存为本地文件的时候操作也很简单:如下:
r=requests.get(‘https://www.baidu.com/fa.ico‘)
with open(‘fa.ico‘,‘wb‘) as fb:
fb.write(r.content)
四、定制请求头
url = ‘https://api.github.com/some/endpoint‘
headers = {‘user-agent‘: ‘my-app/0.0.1‘}
r = requests.get(url, headers=headers)
五、Cookie
获取响应信息的Cookie
url = ‘http://example.com/some/cookie/setting/url‘
r = requests.get(url)
r.cookies[‘example_cookie_name‘]
提交Cookie到服务器
url = ‘http://httpbin.org/cookies‘
cookies = dict(cookies_are=‘working‘)
r = requests.get(url, cookies=cookies)
六、超时
r=requests.get(‘http://github.com‘, timeout=5)
timeout 仅对连接过程有效,与响应体的下载无关。 timeout 并不是整个下载响应的时间限制,而是如果服务器在 timeout 秒内没有应答,将会引发一个异常(更精确地说,是在 timeout 秒内没有从基础套接字上接收到任何字节的数据时)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------完美分隔线
一、代理
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 Basic Auth,可以使用 http://user:[email protected]/ 语法:
proxies = {
"http": "http://user:[email protected]:3128/",
}
------------------------------------------------------------------------下一篇将详细介绍解析库的使用敬请期待
原文地址:https://www.cnblogs.com/liangdejiu/p/9145536.html