第一个脚本——百度翻译爬虫

 

记录第一次制作脚本

本文记录制作一个调用百度翻译实现翻译功能的小脚本

主要有三个步骤:【找接口】=>【研究关键字】=>【写脚本】

找到翻译请求接口

这一步没有难度,在百度翻译页面打开开发者工具,然后输入哈哈,然后在network里找接口就可以。

如果请求太多的话,可以用Fetch/XHR按钮过滤一下:

 

可以看到,这是一个POST请求

分析请求关键字

  1. 从上面看到,关键字有fromtoquerytranstypesimple_means_flagsigntokendomain

    分析之后,得出:fromto代表输入语言输出语言query输入文字transtype翻译类型(自动翻译、点击后翻译等,这个关键字并不重要);domain为常值"common"。而signtoken为一串奇怪的数字

  2. from、to指定语言类型,后面发现,from是可以自动检测或者手动指定的。如果希望自动检测,那就需要在请求翻译接口前请求一次langdetect,并匹配出语言类型。

  3. query由用户输入;transtype和simple_means_flag完全可以写死。

  4. 至于token,全局搜索一下那串字符,发现它是请求fanyi.baidu.com时获取到的

     截止到目前,我需要关心的字段有:

    • from:通过langdetect请求获取

    • query:由用户输入

    • token:请求fanyi.baidu.com获取

    • sign:一个神秘字段

  5. 现在来研究这个sign:

    • 像token一样进行全局搜索,没有结果

    • 从v2transapi请求的调用栈中寻找线索

      一层层地观察call stack,在e.onTranslate附近发现可疑之处

    • 经过打断点调试,发现这里的n就是我输入的哈哈二字,所以,我只需要找到这个x()函数,就能得到sign的值!!!

    • 在控制台里输入x并回车,弹出了我想要的函数。但在复制得到的函数并不能直接运行,因为函数中往往存在一些全局变量或调用了其他函数,这时,需要耐心地把它们补全。经历了一个window.gtk、一个n函数,我终于得到了sign值:

    • 至此,关键字全部复现。

写(抄)脚本

脚本用python编写,写的过程中要注意请求头携带cookie。

另外,我在初次使用PyCharm时,遇到了两个问题:

  • 运行不了js脚本:其实,通过命令行是可以直接node xxx.js的;但最后找到了标准方法——下载nodejs插件。。。

  • py文件中import报错:我明明已经安装过这些库了,怎么说我没有呢?原来新建项目的时候,PyCharm给我在项目目录下放了一个精简的python编译器,而我所安装的库,都在我的AppData那里。。。于是有两种解决思路:一是在项目目录下安装那些库,二是直接使用我自己的解释器。

附:git hub上的百度翻译小爬虫

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xuinrz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值