小编在学习英语的时候,遇到不认识的英语单词,会用百度翻译来查询单词的释义和音标,并播放单词的读音。为了便于复习和记忆,需要将单词的释义和音标以复制粘贴的方式保存到本地。

这个过程非常繁琐,于是小编就想能否利用Python写一个爬虫小程序,来自动完成这些工作呢?

为了完成这样一个小程序,我们需要完成以下几个步骤:

1.输入单词,查询单词的释义和音标

2.下载音频并播放读音

3.保存到本地Excel文件中,并自动调整格式

4.打包成可执行的exe程序

在本篇文章中,我们将讲解如何完成第一个步骤:输入单词,查询单词的释义和音标。

1

打开百度翻译,确定需要抓取的信息

打开以后,我们输入单词“Python”,点击网页中的“翻译”按钮进行查询,出现如下图所示内容。用红框框出的单词释义和音标,是我们需要抓取的信息。

同时,我们想要单词的释义和音标在Excel中以下图所示的结构保存。

2

利用开发者工具(DevTools)进行抓包分析

以Chrome浏览器为例,我们可以通过以下方式打开开发者工具:

1. 在网页空白处点击右键,然后左键点击“检查”

2. Ctrl + Shift + I

3. F12

打开以后,点击“Network”选项,如下图所示:

根据提示,我们按“F5”刷新网页,网页重新加载,在“Network”面板中,可以看到从服务器发送过来的数据,包括HTML文件、JS文件、图片等。

我们点击“logo_cbfea26.png”,再点击“Preview”,会出现百度翻译的图片,也就是网页左上角的Logo。

这些从百度翻译所在服务器传递过来的数据和文件经过浏览器处理和渲染,最终呈现出我们在浏览器里看到的网页界面。

3

找到目标URL,发送请求

我们的目标是找到从服务器传递过来包含单词释义和音标内容的URL地址,然后利用Python去请求该URL地址,得到目标内容。

有些时候,从浏览器传输过来的数据太多太杂,我们无法快速找到目标内容。这是一个熟能生巧的过程,尝试次数多了,自然能够快速定位目标URL。

这里介绍小编常用的一个方法:

1. 点击开发者工具左上方的清理按钮,将原先所有的数据删除,然后点击网页中的“翻译”按钮,网页内容局部加载,在“Network”中会出现新传递过来的数据。

2. 传输过来的数据有多种类型,我们可以利用开发者工具中自带的筛选功能。一般目标内容在“XHR”或者“Doc”中,我们先点击“XHR”选项。具体操作如下图所示。

3. 我们点击“v2transapi”,然后点击“Preview”选项,可以看到具体的内容。我们依次点击:“direct_result” – “simple_means” – “symbols” – “0” – “parts” – “0” – “means”,这样我们就看到了单词释义以及音标。

5. 在“Request Headers”中会出现请求头信息,我们在请求网址的时候一定要带上这些信息,不然不会返回目标内容。

6. 在“Form Data”这一栏中,可以看到有一行是“query : Python”,说明我们要查询的单词是“Python”。所以我们要查询不同的单词只需要在这行更改就行了。

7. 代码如下(由于篇幅所限,省去一些不重要的代码,我们会附上完整代码):

4

加载JS代码得到sign

我们最终实现的目标是能够查询不同的单词。我们在查询其他单词时发现,sign会随着所查询单词的变化而变化。以查询“Python”和“python”为例,我们发现sign分别为“587387.791882”和“477811.239938”。

每一个单词都会对应一个sign,它是根据单词本身用JS代码生成的。这是一个反爬虫手段,如果没有sign,会有很多爬虫轻而易举地去抓取这些信息。我们需要从网页加载的JS代码中找出生成sign的那一段代码,这又是一个复杂而又困难的工作。好在网上已经有热心的网友将这段JS代码找到了,我们直接照搬下来就行。

我们用一个专门执行JS代码的模块“execjs”来生成sign,代码如下:

将两段代码合并,然后发送请求,得到如下数据。这是一段字符串,这其实是JSON格式的数据,我们可以用Python自带的模块“json”来进行处理。

5

处理JSON格式的数据

这里直接贴代码,代码如下。

打开“infos”这个列表,我们可以看到Python已经成功处理了那段字符串,并以“list”的形式存储单词释义和音标。

至此,我们利用Python成功完成了第一个步骤:输入单词,查询单词的释义和音标。

欢迎大家踊跃投稿,内容有关人文社会科学的即可,可以是学术前沿思想介绍、各种定量研究技术和方法介绍、各种软件(stata、Python、R语言,数据可视化等等)数据处理及分析技巧,可以是网络爬虫技巧,也可以是学术论文写作与发表等相关内容。

投稿要求:

1、务必原创、禁止抄袭;

2、务必准确、详细,有例子,有数据,有截图;

注意事项:

1、所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,我们会在推文里注明作者署名,并有稿酬提供;

2、邮件请注明投稿,邮件名为“投稿+推文名称+作者+联系方式”;

以人文之情怀

以学术为志业

···········

python怎么读单词_利用Python制作查单词小程序(一):抓取来自百度翻译的单词释义和音标...相关推荐

  1. python英语词汇读音_利用Python制作查单词小程序(一):抓取来自百度翻译的单词释义和音标...

    小编在学习英语的时候,遇到不认识的英语单词,会用百度翻译来查询单词的释义和音标,并播放单词的读音.为了便于复习和记忆,需要将单词的释义和音标以复制粘贴的方式保存到本地. 这个过程非常繁琐,于是小编就想 ...

  2. 制作一个Java即时翻译器——网页抓取调用百度翻译API

    第一次在CSDN写博客,想着记录一下自己一些作业过程中的问题和心得,没想到要用Markdown语言写,说实话我还真没用过呢,还要边学边写.话不多说,进入正题. 1.引言 平时在上网浏览网站或者阅读一些 ...

  3. python英语词汇读音_利用PYTHON 爬虫爬出自己的英语单词库

    为什么要建立自己的单词库 用过各种的背单词软件,总是在使用其他人的词库或者软件自己提供的词库,基本是人家提供什么自己就用什么,要想有更多的自主基本没有,最近看一个 COCA的按单词使用频率来提取的2万 ...

  4. python处理nc数据_利用python如何处理nc数据详解

    利用python如何处理nc数据详解 来源:中文源码网    浏览: 次    日期:2018年9月2日 [下载文档:  利用python如何处理nc数据详解.txt ] (友情提示:右键点上行txt ...

  5. python post请求 上传图片_利用python模拟实现POST请求提交图片的方法

    本文主要给大家介绍的是关于利用python模拟实现POST请求提交图片的方法,分享出来供大家参考学习,下面来一看看详细的介绍: 使用requests来模拟HTTP请求本来是一件非常轻松的事情,比如上传 ...

  6. python自定义函数画图_利用Python绘图和可视化(长文慎入)

    Python有许多可视化工具,但是我主要讲解matplotlib(http://matplotlib.sourceforge.net).此外,还可以利用诸如d3.js(http://d3js.org/ ...

  7. python做游戏代码_利用Python基础代码语句,实现2G时代文字小游戏,世界如此简单!...

    相信许多80,90后都玩过2G时代的文字小游戏,它是来自QQ家园的专属回忆.偷菜,美味小镇,大乐斗,还有精武堂等等,虽然只是文字的输出,但是留给我们这一代的人的印象却是最深刻的.曾经流量很少,响应很快 ...

  8. python实现邮件客户端_利用python实现简单的邮件发送客户端示例

    脚本过于简单,供学习和参考.主要了解一下smtplib库的使用和超时机制的实现.使用signal.alarm实现超时机制. #!/usr/bin/env python # -*- coding: ut ...

  9. python连接opencv库_利用Python和OpenCV库将URL转换为OpenCV格式的方法

    今天的博客是直接来源于我自己的个人工具函数库. 过去几个月,有些PyImageSearch读者电邮问我:"如何获取URL指向的图片并将其转换成OpenCV格式(不用将其写入磁盘再读回)&qu ...

  10. 用python进行股票数据分析_利用python进行股票数据分析

    个人觉得这问题问的不太对,说句不好的话,你是来搞编程的还是做股票的. 当然,如果题主只是用来搜集资料,看数据的话那还是可以操作一波的,至于python要怎么入门,个人下面会推荐一些入门级的书籍,通过这 ...

最新文章

  1. 【学习笔记】人类为什么最终选择了芯片
  2. c语言线程面试题,java多线程面试题 PDF 下载
  3. MAX3222/MAX3232/ MAX3237/MAX3241/串口通信中文_技术文档
  4. Supervised Descent Method and its Applications to Face Alignment
  5. eigen 编译_头条 | 使用eigen实现四元数、欧拉角、旋转矩阵、旋转向量间的转换...
  6. Ubuntu下安装OpenSSH Server并在客户端远程连接Ubuntu
  7. spring3 常见异常解决
  8. 回旋矩形C语言,C语言回旋函数解释下,该如何处理
  9. 中国共享经济发展报告
  10. JavaWeb前台异常处理
  11. 【LeetCode】剑指 Offer 22. 链表中倒数第k个节点
  12. fetchtype 动态控制_hibernate 中 fetch=FetchType.LAZY 懒加载失败处理方法
  13. Blockchair首席开发者质疑闪电网络能够扩展比特币:可锁定大部分闪电网络的流动性来破坏闪电网络
  14. [译] Sklearn 与 TensorFlow 机器学习实用指南
  15. 电脑如何更改设置本机IP地址
  16. 微信小程序audio的简单实用
  17. (十二:2020.08.28)CVPR 2016 追踪之论文纲要(译)
  18. 如何设置IE禁用代理服务器
  19. Android SO文件保护加固——加密篇(一)
  20. shiro反序列化漏洞

热门文章

  1. Linux安全模块(LSM)入门及Yama源码分析
  2. QCC302X/QCC303X蓝牙对讲与蓝牙扩音器
  3. python打开浏览本地html文件_python解析本地HTML文件
  4. 概率计算机在线,在线抽奖大转盘和概率计算
  5. K均值算法(K-means)聚类
  6. VS2019 编译 odb-mysql2.4详细过程
  7. 蓝牙技术谈之跳频技术(一)
  8. 无人机通信电台--XBee-PRO 900HP (S3B)
  9. 无线网络技术导论笔记(第五讲)
  10. 逻辑学是计算机科学的一个重要分支,逻辑学在计算机科学中应用.doc