微前端架构如何改变企业的开发模式与效率提升
1024
2022-09-07
爬取百度翻译(可中英互译)(百度翻译爬虫sign)
由于下学期报了一个Python的入门课程
所以寒假一直在自己摸索,毕竟到时候不能挂科,也是水水学分
最近心血来潮打算试试爬一下百度翻译
肝了一天终于搞出来了
话不多说,直接开搞(环境是Python 3.8 PyCharm Community Edition 2021.3.1)
基础步骤
百度翻译会识别到爬虫,所以得用headers隐藏一下
以chorme浏览器为例
在百度翻译页面点击鼠标右键,选择“检查”(或者直接F12)
显示以下界面
依次选Network-Fetch/XHR-Headers
然后就能看到我们需要的标头
我们需要的是Cookie和User-Agent,用于表示是特定用户通过浏览器打开此网站
也就是伪装爬虫
然后我们复制到Pycharm当中即可
1 headers = {"User-Agent": Your User-Agent, "Cookie": Your Cookie}
2 # 后面填写你获取到的User-Agent和Cookie即可
提交表单
伪装好了之后,需要准备让爬虫向网站提交表单
但是我们提交之前需要看看我们要提交哪些数据
继续查看网站
我们可以看到有一个表单数据
这就是我们要提交的数据
但是我们提交表单的是动态的,所以要重新写一下data
也就是
获取响应并处理结果
我们考虑到提交了数据之后,咱们需要接收网页的反馈
所以继续看看返回来的翻译在哪
我们会发现,我们想要的和现实的似乎有些差别
结果是有了,但是不是中文,是Unicode
办法总是有的
response = requests.post(url='https://fanyi.baidu.com/v2transapi', headers=headers, timeout=1, data=data)
response.encoding = 'utf-8'
print(response.status_code) # 获取状态码
print(re.search("[\\u4e00-\\u9fa5]+", response.content.decode('unicode_escape'), flags=re.S)[0]) # 正则表达式查找汉字
这样打印出来的就是中文了~
挺意外的
差不多就可以提交了!
然后我兴冲冲的去提交数据
百度翻译给了我一个大嘴巴深刻的教训
这是咋回事?apple的翻译应该是苹果而不是未知错误啊
然后我发现,前面的data漏了一个sign
sign是不同的单词算出来的不一样的,但是相对于单词是固定的
幸好网上巨佬多,找到了sign的算法
https://blog.csdn-/qq_38534107/article/details/90440403?utm_source=app&app_version=5.0.0&code=app_1562916241&uLinkId=usr1mkqgl919blen
有兴趣可以看看sign算法的获取
最后把sign贴上去,就成功了!
消除警告
但是会出现一个Warning
翻译结果底下出现一个警告,不好看
于是想办法,加入了这个
import warnings
warnings.filterwarnings("ignore", category=Warning) # 关闭弃用报错
就没有错误了~
至此,英译中功能就做的差不多了
中译英是基本一样的,但是返回的东西很多,可以通过这个语句来筛选
print(re.findall(pattern='[a-zA-Z]+', string=response.content.decode('unicode_escape'), flags=re.S)[4])
差不多就是这样咯~
全部代码:
main.py
sign.py
运行示例:
出处:https://cnblogs.com/Edwardssss/p/15830024.html
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~