当前位置:   article > 正文

有道翻译爬虫实战_有道翻译爬虫所考察的知识点有哪些

有道翻译爬虫所考察的知识点有哪些

写在前面

   学习爬虫也有一段时间了,但始终感觉自己脑袋空空,好像会了不少,又好像啥也不会。后经高人指点,顿觉自己在学习方法上存在问题!遂决定以后把自己的所学、所见、所思完整的记录下来,既能做以后回顾之用,又能启发后来人,岂不妙哉。好了,废话不多说,让我们进入正题。

准备工作

工具

语言:万能的python
操作系统:windows7
IDE:pycharm
解释器:python 3.7.3
文本工具:sublime text
浏览器:Chrome

知识点

1.urllib库,关于python3的urllib库的使用可以参考下面链接:
点击我进行传送
2.json库,我们需要用到json.loads()方法将json数据转换为Python对应的数据(本文中主要是转换成字典和列表的形式),与其对应的是json.dumps()方法,本文不涉及就不多说了。
3.python的一些其他库:random库、time库、hashlib库,具体用途后面会说。

正文部分

实地考察

   俗话说,知己知彼,百战不殆。我们只有了解了有道翻译的运行机制,才能利用爬虫在其中获取我们想要的数据。打开浏览器(这里用的是Chrome),进入浏览器的翻译页面,在浏览器页面点击鼠标右键进入检查选项:[图1]
图1
选择Network[图2]
在这里插入图片描述
   我们要通过浏览器自带的抓包工具来抓取一些数据包,搞明白在按下翻译按钮后,浏览器和有道翻译的服务器之间做了怎样的交互。下面在文本框内输入“hello”,看看抓到了哪些包:[图3]
在这里插入图片描述
先看第一项,点击第一项然后观察右侧:[图4]
在这里插入图片描述
   可以看到Request Method这一项为post,通常情况浏览器大多使用post和get方式向服务器发送请求(当然还有其他方式)。其中post请求的安全性比get请求更高,至于二者的区别不在本文范围内,这里有道翻译使用的是post请求方式(post请求通常可以传输较大的数据量,而则get不能)。继续往下翻:[图5]
在这里插入图片描述
   这里的Form Data就是浏览器向有道翻译的服务器发送的内容,可以看到,i值对应的正是我们输入的要翻译的文字,这个表单正是浏览器向服务器发送post请求时提交的数据。再点击与上方Headers处在同一行的Response,这一项是服务器给浏览器的响应(回复):[图6]
在这里插入图片描述
   可以看到这是一个json数据,其中键“tgt”对应的值正是我们想要的翻译结果,键“src”对应的是我们输入的待翻译文字。至此,由以上分析我们可以大致知道,在我们点击“翻译”按钮以后,浏览器向有道翻译的服务器以post请求的方式提交了数据(数据就是之前Form Data里的内容),然后浏览器给我们回复了一个json的数据,其中就包含了翻译的结果。现在我们只要利用python模拟浏览器的行为向服务器发送请求,我们接收到浏览器的响应(回复)的json数据之后再分析、提取出翻译的结果即可。那么我们应该向哪里发送请求呢,还记得图4吗,在图4的Request URL一项中对应的值正是数据提交的地址我们只需将数据发送到这里即可。

编写代码

from urllib import request, parse


def translateSpider(e):

    url = "http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule"
    headers = {   # 构造请
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/神奇cpp/article/detail/855708
推荐阅读
相关标签
  

闽ICP备14008679号