小编在学习英语的时候,遇到不认识的英语单词,就会用百度翻译来查找单词的释义和音标,并播放单词的发音。为了方便复习和记忆,单词的定义和音标需要以复制粘贴的形式保存在本地。
这个过程非常繁琐,所以小编就想是否可以写一个小爬虫程序来自动完成这些任务呢?
为了完成这样一个小程序,我们需要完成以下步骤:
1.输入一个单词并查看它的定义和音标
2.下载音频并播放发音
3.保存到本地文件并自动调整格式
4.打包成可执行的exe程序
在这篇文章中,我们将解释如何完成第一步:输入单词并查找单词的定义和注音。
打开百度翻译,确定需要抓取的信息。
我们首先打开目标网页,即百度翻译:
打开后,我们输入“”一词,点击网页上的“翻译”按钮进行查询,就会出现如下图所示的内容。红框内的词义和音标就是我们需要捕获的信息。
同时,我们希望将单词的定义和音标保存在下图所示的结构中。
使用开发者工具()进行抓包分析
以浏览器为例,我们可以通过以下方式打开开发者工具:
1. 右键单击网页空白处,然后左键单击“检查”
2. Ctrl + + I
3.F12
打开后,点击“”选项,如下图:
根据提示,我们按“F5”刷新网页,网页重新加载。在“”面板中,我们可以看到服务器发送过来的数据,包括HTML文件、JS文件、图片等。

我们点击“”,右侧栏中会出现“”、“”、“”等选项。点击“”,会出现网页“”对应的网页源代码。
当我们点击“.png”,再点击“”,就会出现百度翻译的图片,也就是网页左上角的标志。
这些从百度翻译所在服务器传过来的数据和文件,经过浏览器的处理和渲染,最终呈现出我们在浏览器中看到的网页界面。
找到目标URL并发送请求
我们的目标是找到服务器传过来的包含词义和音标的URL地址,然后用它来请求URL地址来获取目标内容。
有时,浏览器传输过来的数据太多、太复杂,我们无法快速找到目标内容。这是一个熟能生巧的过程。您尝试的次数越多,找到目标 URL 的速度就越快。
下面是小编常用的一个方法:
1、点击开发者工具左上角的清理按钮,删除所有原始数据,然后点击网页上的“翻译”按钮。网页内容将被部分加载,新传递的数据将出现在“”中。
2.传输的数据类型较多,我们可以使用开发者工具中的过滤功能。一般来说,目标内容在“XHR”或“Doc”中。我们首先点击“XHR”选项。具体操作如下图所示。
3、我们点击“”,然后点击“”选项就可以看到具体的内容了。我们依次点击:“”——“”——“”——“0”——“”——“0”——“”,这样就可以看到词义和音标了。
4. 然后单击“”。在“”栏中,可以看到我们请求的URL地址和请求方式。我们将使用“POST”请求方法请求“”。
5、请求头信息会出现在“ ”中。我们在请求URL时必须带上这些信息,否则不会返回目标内容。
6、在“表单数据”栏中,可以看到一行带有“:”的行,说明我们要查询的单词是“”。所以如果我们想要查询不同的单词,只需要改变这一行即可。
7、代码如下(由于篇幅限制,省略了一些不重要的代码,我们将附上完整的代码):

加载JS代码获取签名
我们最终实现的是能够查询不同的单词。当我们查询其他单词时,我们发现符号随着查询单词的变化而变化。以查询“”和“”为例,我们发现符号是“.”。和 ”。”分别。
每个单词对应一个符号,该符号是根据单词本身使用 JS 代码生成的。这是一种反爬虫的方法。如果没有标志,很多爬虫很容易抓取到这些信息。我们需要从网页加载的JS代码中找出生成标志的代码。这又是一项复杂而艰巨的任务。幸运的是,热心网友在网上找到了这段JS代码,我们直接copy即可。
我们使用一个模块“”专门执行JS代码来生成符号。代码如下:
将两段代码合并,然后发送请求,得到如下数据。这是一个字符串,实际上是JSON格式的数据。我们可以使用内置模块“json”来处理它。
处理 JSON 格式的数据
这里直接粘贴代码,代码如下。
打开“”列表,我们可以看到字符串已经处理成功,并且词义和音标都以“列表”的形式存储起来。
至此,我们已经成功完成了第一步:输入单词并查询单词的释义和注音。
人文社会科学观察员