[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 文档

原创粉丝点击