目录
继上一章 ——> python中requests发送GET请 ,下面说如何进行发送POST请求
request.post()中的参数
requests中发送post请求里面有几个基础的参数如下
requests.post(url=url,data=data,headers=headers)
- data:请求所携带的参数,以字典的形式进行封装
Ajax
首先来说一下什么是Ajax,Ajax 即“Asynchronous Javascript And XML”(异步 JavaScript 和 XML),是指一种创建交互式、快速动态网页应用的网页开发技术,无需重新加载整个网页的情况下,能够更新部分网页的技术。
我们应该有过这种体会,当我们在网页中搜索时,我们只要输上关键词,页面马上就会进行刷新查找然后显示结果,我们并没有点击查询按钮,而且它只是进行页面局部的刷新。这种现象就是利用的ajax技术
案例——百度翻译
我们知道了百度翻译利用的是ajax局部刷新的技术。所以我们得找到发送单词请求的那个数据所在url。按F12选择Fetch/XHR捕获ajax请求,填入单词。如下找到了发送单词的请求,请求地址为https://fanyi.baidu.com/sug,且是以post方式发送
且携带的参数为 kw:hello
且返回的数据为一组json数据,可以使用response.json()获取json对象。若果使用response.text()的话获取到的就是下面的一串,像乱码一样的东西
编写代码
import requests
import json
url='https://fanyi.baidu.com/sug'
#进行UA伪装
headers={
'User-Agent':'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Mobile Safari/537.36'
}
#post请求参数处理
word= "hello"
data = {
'kw':word
}
#发送请求
response = requests.post(url=url,data=data,headers=headers)
#只有响应数据类型为json, 才能使用response.json
text = response.json()
print(text)
#以json的格式保存字典形式的数据
filename = data['kw'] + '.json'
with open(filename,'w',encoding='utf-8') as df:
json.dump(response.json(),fp=df,ensure_ascii=False) #因为我们拿到的这个dic_obj是中文的,中文是不能用ascii的