目录
request.post()中的参数
Ajax
案例——百度翻译
继上一章 ——> python中requests发送GET请 ,下面说如何进行发送POST请求
requests中发送post请求里面有几个基础的参数如下
requests.post(url=url,data=data,headers=headers)
首先来说一下什么是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的