前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >爬虫练习 | 利用有道翻译,做个自己的翻译程序

爬虫练习 | 利用有道翻译,做个自己的翻译程序

作者头像
佛系编程人
发布2019-08-14 11:40:43
7810
发布2019-08-14 11:40:43
举报

欢迎大家关注 【佛系学python】~

今天利用有道翻译在线网站做个简单的翻译程序

首先打开有道翻译的网址:

”http://fanyi.youdao.com/“

按 f12 打开检查工具

点击element浏览了一下

发现html里并没有我们想要的内容

说明它不是静态加载的

那应该是经过动态Ajax加载的

所以点击Network,开始它长这样的

你会看到啥都没有

按F5刷新一下就会出现很多网址或文件

这些文件是有道翻译网页的组成部分

从上到下依次加载

不过这里不要刷新

不然待会还要花时间找对应的信息

1处随便写些内容

然后点击XHR(这个先点后点都没关系)

然后会在3处跳出一个网址

点击headers会看见第4处的内容

点击preview

会发现里面有我们要翻译的内容和结果

看来我们找对了方向了

它是以json格式进行存储数据的

这对于我们提取数据会更加方便

那居然知道网址后就是提取数据

那我们要怎么提取呢

回到我们的headers,在第4处有个网址

这个网址才是真正存储我们需要的数据的网址

继续往下看

找到 Request Method

原来它是post方式对服务器进行请求的

那我们要提交什么数据呢

继续往下看

在From data里发现了我们想要翻译的内容

看来以下这段就是我们需要提交的数据了

这么多数据我们该怎么获得呢

别急~

我们试着翻译其他内容

看看有哪些值会变

经过对比后发现

有四个值发生了变化

分别是”i,salt,sign,ts"这四个

i是我们要翻译的内容

另外三个不知道是什么

后面发现这三个不用管也可以

知道我们的目标在哪后

就是写代码进行提取数据了

因为是json格式

相当于字典

所以很好获取

因为代码不是很多

也不会很难理解

所以有些方面我就不细讲了

直接上代码

import requests
url = "http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule"
data = {
"i":input("输入要翻译的内容:"),
"from": "AUTO",
"to": "AUTO",
"smartresult": "dict",
"client": "fanyideskweb",
"bv": "146ae0587a435b36d5e7ac4d9b08bde6",
"doctype": "json",
"version": "2.1",
"keyfrom": "fanyi.web",
"action":" FY_BY_REALTlME"
}
req = requests.post(url,data = data) #以post的方式
js = req.json()
result = js["translateResult"][0][0]["tgt"]
print(result)

requests对象有个向服务器请求有两种方法

一种是get请求

一种就是今天这种post请求

这两种有什么区别呢?

get请求是不用提交表单的

也就是不用提交额外的数据

一般用于下载静态网页之类的

post请求就是需要我们提供一些数据给服务器的

比如说登陆就是用post请求

然后post方法里有个data参数

用来存储提交的数据

它是以字典的数据结构进行存储的

因为我们要从json格式里提取数据

所以我们用json方法将下载后的数据转换为json格式

最后就跟提取字典一样操作就OK了

好啦,今天的分享就到这里

希望大家能够把这篇文章分享给别人

这也是我写作的动力~

谢谢大家

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-04-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 佛系编程人 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档