python百度翻译爬虫

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python百度翻译爬虫相关的知识,希望对你有一定的参考价值。

好像百度翻译的反爬虫升级了,改了设备也没有用,在网页源码data里还是有size和token,请问怎么解决?无效代码如下:
# coding=utf-8
import requests
import json
import sys

query_string = sys.argv[1]

headers =
"User-Agent": "Mozilla/5.0 (Linux; android 5.1.1; Nexus 6 Build/LYZ28E) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/63.0.3239.84 Mobile Safari/537.36"

post_data =
"query": query_string,
"from": "zh",
"to": "en",


post_url = "http://fanyi.baidu.com/basetrans"

r = requests.post(post_url, data=post_data, headers=headers)
# print(r.content.decode())
dict_ret = json.loads(r.content.decode())
ret = dict_ret["trans"][0]["dst"]
print("result is :", ret)

源页面获取的token必先向服务端post过后才有效果,sign是一层加密,token也是,源页面的id有效期长点,post过程用到了base64.encodebytes 以及 AES.CBC 加密等,我就知道这些,py调用js又会效率上不去 参考技术A python是当下十分火爆的编程语言,尤其在人工智能应用方面。如果有心从事编程方向的工作,最好到专业机构深入学习、多实践,更贴近市场,这样更有利于将来的发展。

python --爬虫--爬取百度翻译

import requests
import json


class baidufanyi:
def __init__(self, trans_str):
self.lang_detect_url = ‘https://fanyi.baidu.com/langdetect‘ # 语言检测地址
self.trans_str = trans_str
self.headers= {‘User-Agent:Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Mobile Safari/537.36‘}

def parse_url(self,url,data):
resonpse = requests.post(url,data=data,headers=self.headers)
return json.loads(resonpse.content.decode()) #将字符串转化为字典
def run(self):
# 1 获取语言类型
# 1.1 准备post 的url的地址 post_data
lang_detect_data = {‘query‘: self.trans_str}
# 1.2 发送post 请求 获取数据
lang = self.parse_url(self.lang_detect_url,lang_detect_data)[‘lan‘]
# 1.3 提取语言类型
# 2 准备post 数据
# 3 发送请求 , 获取响应
# 4 提取翻译结果


if __name__ == ‘__main__‘:
baidufanyi = baidufanyi()
baidufanyi.run()

以上是关于python百度翻译爬虫的主要内容,如果未能解决你的问题,请参考以下文章

Python爬虫 — 百度翻译

python --爬虫--爬取百度翻译

Python爬虫教程-08-post介绍(百度翻译)(下)

Python 调用 百度翻译 出现error997 的解决办法

Python爬虫实战,破解百度翻译JS加密,制作桌面翻译工具

Python爬虫之破解百度翻译--requests案例详解