[Python]
来源:互联网 发布:梦幻手游抢装备软件 编辑:程序博客网 时间:2024/06/06 19:18
Requests 是一个非常强大的 HTTP 请求库,基于 urllib,使网络请求变的非常简洁
官方文档
Requests 官方文档
安装
利用 pip
安装
$ pip3 install requests
利用 easy_install
easy_install requests
初步尝试
首先我们引入一个小例子来感受一下
import requestsr = requests.get("http://www.baidu.com", )print(type(r))print(r.status_code)print(r.encoding)# print(r.text) print(r.cookies)print(r.headers["content-type"])# print(r.json())
基本请求
requests
库提供了http
所有的基本请求方式
例如
r = requests.get("http://httpbin.org/get")r = requests.post("http://httpbin.org/post")r = requests.put("http://httpbin.org/put")r = requests.delete("http://httpbin.org/delete")r = requests.head("http://httpbin.org/get")r = requests.options("http://httpbin.org/get")
一句话搞定
基本GET请求
最基本的GET请求可以直接用get方法
r = requests.get("http://httpbin.org/get")
如果想要加参数,可以利用 params 参数
import requestsparams = {"username": "mazy", "password":"xxxx"}r = requests.get("http://httpbin.org/get", params=params)print(r.url) # http://httpbin.org/get?username=mazy&password=xxxx
请求JSON文件,可以利用 json() 方法解析
r = requests.get("http://httpbin.org/get")print(r.text)print(r.json())
如果想添加 headers,可以传 headers 参数
params = {"username": "mazy", "password":"xxxx"}headers = {'content-type': 'application/json'}r = requests.get("http://httpbin.org/get", params=params, headers=headers)
基本POST请求
对于 POST 请求来说,我们一般需要为它增加一些参数。那么最基本的传参方法可以利用 data 这个参数
import requestsparams = {"username": "mazy", "password":"xxxx"}r = requests.post("http://httpbin.org/post", data=params)print(r.url)print(r.text)
有时候我们需要传送的信息不是表单形式的,需要我们传JSON格式的数据过去,所以我们可以用 json.dumps() 方法把表单数据序列化
import requestsimport jsonparams = {"username": "mazy", "password":"xxxx"}r = requests.post("http://httpbin.org/post", data=json.dumps(params))print(r.url)print(r.text)
如果想要上传文件,那么直接用 file 参数即可
新建一个 a.txt
的文件,内容写上 Hello World!
import requestsurl = 'http://httpbin.org/post' files = {"file": open("text.txt", "rb")}r = requests.post(url, files=files)print(r.text)
Cookies
用 cookies
变量来得到站点的 cookies
另外可以利用 cookies
变量来向服务器发送 cookies
信息
url = 'http://httpbin.org/cookies' cookies = dict(cookies_are='working')r = requests.get(url, cookies=cookies)print(r.text)
超时配置
可以利用 timeout
变量来配置最大请求时间
r = requests.get("http://httpbin.org/get", timeout=10)
会话对象
在以上的请求中,每次请求其实都相当于发起了一个新的请求。也就是相当于我们每个请求都用了不同的浏览器单独打开的效果。也就是它并不是指的一个会话,即使请求的是同一个网址
import requestss = requests.Session()s.get('http://httpbin.org/cookies/set/sessioncookie/123456789')r = s.get("http://httpbin.org/cookies")print(r.text)
SSL证书验证
现在随处可见 https
开头的网站,Requests
可以为HTTPS
请求验证SSL
证书,就像web浏览器一样。要想检查某个主机的SSL证书,你可以使用 verify
参数
现在 12306 证书不是无效的嘛,来测试一下
import requestsr = requests.get('https://kyfw.12306.cn/otn/', verify=True)print(r.text)
报错:
requests.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590)
如果我们想跳过刚才 12306 的证书验证,把 verify
设置为 False
即可
import requestsr = requests.get('https://kyfw.12306.cn/otn/', verify=False)print(r.text)
在默认情况下 verify 是 True
,所以如果需要的话,需要手动设置下这个变量。
代理
如果需要使用代理,你可以通过为任意请求方法提供 proxies
参数来配置单个请求
import requestsproxies = {"https" : "http://41.118.132.69:443"}r = requests.post("http://httpbin.org/post", proxies=proxies)print(r.text)
API
以上讲解了 requests
中最常用的参数,如果需要用到更多,请参考官方文档 API
Requests API 文档
- Python
- Python
- Python
- python
- Python
- PYTHON
- Python
- Python
- Python
- Python
- Python
- Python
- Python
- Python
- Python
- Python
- python
- Python
- 3.3函数交互
- 征信数据二三十
- Linux下oracle自动启动监听及服务
- osg和Qt结合,记录一下环境搭建,测试及遇到的问题
- ConcurrentHashMap源码阅读与理解
- [Python]
- boost相关
- Windows server 2008 R2远程桌面3389端口号修改
- Mycat生产实践---数据迁移与扩容实践
- golang 创建,读取,写入文件
- Python之函数(5)
- JDBC连接入门
- Spark优化操作_自定义distinct
- 微博登录趟过的那些坑