视频中讲解的是百度翻译,但是视频中的方法现在已经不适用了,因为他们对 URL 的参数进行了修改,导致没法直接修改参数来爬取对应的翻译结果,这里我使用搜狗翻译来做演示,原理是一样的。
我们搜索的关键字会返回在 URL 中,后面的无用参数可以删除
删除后
前置知识:
翻译相关的页面有个特点:就是你输入单词后不需要其他操作,页面会自动刷新出新的数据(该数据就是翻译结构)
【页面局部刷新的现象】
如下图所示就是请求回来的翻译结果
所以该数据包就是我们需要捕获的数据包
判断返回数据类型是否为 json
编写代码
import requests
import jsonif __name__ == '__main__':post_url = 'https://fanyi.sogou.com/reventondc/suggV3'headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:123.0) Gecko/20100101 Firefox/123.0'}word = input('enter a word:')data = {'from':'auto','to':'zh-CHS','client':"web",'text':word,'uuid':"5c2d6117-a5e9-482e-abaf-2343abcf3a93",'pid':"sogou-dict-vr",'addSugg':"on"}response = requests.post(url=post_url,data=data,headers=headers)# json 返回的是一个对象(如果确认响应数据是json类型的才可以使用)dic_obj = response.json()print(dic_obj)file_name = word + '.json'fp = open(file_name,'w',encoding='utf-8')json.dump(dic_obj,fp=fp,ensure_ascii=False)
注意:
data 字典里的请求参数要补全,不然无法实现