赞
踩
如果直接使用百度翻译的网址
百度翻译的网址
能得到一个百度翻译对应的页面,但是这个页面不是我们需要的,我们需要的是输入相应的文字之后能够得到对应内容的翻译
此时如果我输入dog进行翻译之后
会发现dog对应的url的内容如下:
dog对应的url内容
仔细观察之后发现,将对应网址中的dog内容删除之后,页面重新进行了一次刷新,页面对应的网址变回原来的百度翻译界面
而录入dog之后,没有触碰任何的界面,它又自动刷新,我们碰到了一个页面的局部刷新内容,我们知道页面的局部刷新可以通过阿贾克斯的内容实现。此时我们打开相应的抓包工具,捕获相应的阿贾克斯请求
抓包工具中的xhr为阿贾克斯对应的请求,
第一个sug请求方式为post,传入的数据为d,第二个sug请求方式为post,传入的数据为do
每输入一个字符,就会对应的发起一个阿贾克斯请求,输入dog的时候总共发起了三个阿贾克斯请求,
可以看出这是一个post请求,然后我们查看post请求传入的参数,
可以看出这里传入的参数为dog,再查看response的响应内容
可以看出返回的对应数据就是一个dog内容的数据,所以返回的是一个post请求(携带了参数),响应数据是一组json数据,这组数据就是dog串返回的一个json结果。
在抓包工具之中有个Content-Type之中能看到返回的json数据
对应的源代码如下:
import requests import json #1.指定url post_url = 'https://fanyi.baidu.com/sug' #2.进行UA伪装 headers = { 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36' } #3.post请求参数处理(同get请求一致) word = input('enter a word:') data = { 'kw':word } #4.请求发送 response = requests.post(url=post_url,data=data,headers=headers) #post(url,data,json,kw,),这里面data所携带的数据相当于get当中的param的 #对应的参数,data也赋值一个字典类型的数据 #5.获取响应数据,json()方法返回的是一个obj (如果确认响应数据是json类型的 #才可以hi用json()方法进行返回) dic_obj = response.json() fileName = word+'.json' fp = open(fileName,'w',encoding='utf-8') json.dump(dic_obj,fp=fp,ensure_ascii=False) print('over!!!')
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。