python中requests发送POST请求—破解百度翻译案例

目录

request.post()中的参数

Ajax

案例——百度翻译


继上一章 ——> 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技术

python中requests发送POST请求—破解百度翻译案例

案例——百度翻译

我们知道了百度翻译利用的是ajax局部刷新的技术。所以我们得找到发送单词请求的那个数据所在url。按F12选择Fetch/XHR捕获ajax请求,填入单词。如下找到了发送单词的请求,请求地址为https://fanyi.baidu.com/sug,且是以post方式发送

python中requests发送POST请求—破解百度翻译案例

 且携带的参数为 kw:hellopython中requests发送POST请求—破解百度翻译案例

且返回的数据为一组json数据,可以使用response.json()获取json对象。若果使用response.text()的话获取到的就是下面的一串,像乱码一样的东西

python中requests发送POST请求—破解百度翻译案例

编写代码

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的

python中requests发送POST请求—破解百度翻译案例

上一篇:JS中字符串的单个,多个替换


下一篇:three.js导入模型自适应居中展示