目录
json():获取响应的json数据,要求就是响应数据是json格式,以微信公众号接口文档为例
创建请求
get请求
requests是一个拥有及其简单API的用于实现HTTP的模块,实现起来非常容易。
现在我们以百度新闻为例来尝试一下get请求的实现,只需要直接调用requests模块中的get()函数传入url地址就可以
语法:requests.get(url)
import requests
response = requests.get("http://news.baidu.com/")
print(response)
通常情况下我们发送的请求中都会添加有参数,那么使用requests又该如何在url地址后面拼接参数呢?
需要使用get()函数的params参数添加一个字典类型的数据作为参数,还是以百度新闻为例
语法:requests.get(url, params={})
import requests
paramers = {"rtt": "1", "bsst": "1", "cl": "2", "tn": "news", "rsv_dl": "ns_pc", "word": "haha"}
response = requests.get("http://news.baidu.com/", params=paramers)
print(response)
现在我们了解了如何发送get请求,以及如何发用带有参数的get请求,接下来我们来看看如何处理post请求
post请求
post请求请求会需要发送请求体,所以我们需要直接在请求发送时添加请求体参数
语法:requests.post(url, data={})
以微信公众号的创建用户标签为例:微信公众号用户管理接口文档
import requests
token = "" # 填写自己使用微信号获取到的token
payload = {"tag": {"name": "广东"}}
res = requests.post("https://api.weixin.qq.com/cgi-bin/tags/create?access_token="+token, data=payload)
print(res)
除了get和post这两个使用频率最高的请求方式之外,requests还提供了其他请求方式的API:PUT, DELETE, HEAD , OPTIONS
我就不一 一写了,直接把人家官网上的抄过来的,感兴趣的就自行验证下吧
r = requests.put('https://httpbin.org/put', data = {'key':'value'})
r = requests.delete('https://httpbin.org/delete')
r = requests.head('https://httpbin.org/get')
r = requests.options('https://httpbin.org/get')
http的请求我们已经学会了如何发送,但是每次的返回值都是一个200的statu code,无法查看到响应内容,那么接下来我们就看下如何查看http响应
响应内容
因为http请求中涉及到了编码格式,所以响应内容需要正常查看的话就需要设置编码,requests模块贴心的提供了我们一个更快捷的查看属性 text,还是以百度新闻为例
text:以文本形式显示响应内容
import requests
paramers = {"rtt": "1", "bsst": "1", "cl": "2", "tn": "news", "rsv_dl": "ns_pc", "word": "haha"}
response = requests.get("http://news.baidu.com/", params=paramers)
print(response.text)
结果如下
content:以字节形式返回响应内容的
response.content
decode():对响应内容进行解码
response.content.decode()
status_code:获取响应状态码
response.status_code
raise_for_status():抛出异常状态码,4**所代表的客户端异常和5**代表的服务器异常
response.raise_for_status()
headers:获取响应头
response.headers
cookies:获取响应的cookie信息
response.cookies[""] #参数写需要获取的cookie的key
json():获取响应的json数据,要求就是响应数据是json格式,以微信公众号接口文档为例
response.json()
添加请求头
网站都不希望被其他人免费爬取内容,所以会验证请求的User-Agent,就需要我们知道如何添加User-Agent。之前说过请求分为三部分 请求头、请求行、请求体 ,User-Agent就是请求头中的一部分内容。处理方法同样是在请求中添加一个参数 headers,格式同样是字典数据类型
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36"}
response = requests.get("http://news.baidu.com/", params=paramers, headers=headers)