爬虫笔记 1.使用python3网络爬虫简单实现在线翻译网站api翻译功能

在学习网络爬虫的过程中,实现了用爬虫在某在线翻译网站上进行翻译的作用,不用调用该网站的官方api即可获得翻译的结果。

首先是常规的操作:
导入我们进行爬虫所需要的包

在这里插入图片描述
接着我们打开该网站的网站。http://fanyi.youdao.com/
随便输入一个英文进行翻译(此行为是为了帮助我们便于找到数据的传输方式)
按F12打开审查元素,接着,将一个英文进行翻译。
在这里插入图片描述
我们可以看到这样的界面。
然后点击右边的network
打开第三个文件(文件名为http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule)我们可以在这里面看到这个Request URL,这个URL其实才是我们进行翻译的界面,这个界面对于我们进行翻译十分重要。
同时,记录下这个页面的Form Data,这个是为了后面我们进行操作的方便
在这里插入图片描述
完成了这些工作后,就开始了我们代码的书写。

1.进行网页的爬取

这里注意,url不为我们最开始的那个页面,因为那个页面其实并没有实现我们的翻译功能,只是在翻译功能完成之后又跳转回了这个页面。真正的翻译页面在Request URl里面,所以这里为:http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rul
(这里注意,原本的里面translate?应该为translate_o?,_o之后我们的爬虫会爬取失败,原因是因为可能增加了反扒机制,去掉这个_o即可以完成我们的功能。)
其次,我们要把Form Data里面的数全部以一个字典的形式存放进来,记作Data,这样是为了使得爬虫能够代替我们实现翻译的动作。
完整代码如下:

import urllib.request as test
import urllib.parse
import json
a=input("你想要翻译的话\n")
b=str(a)
url='http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
data={}
data['i']= b
data['from']='AUTO'
data['to']='AUTO'
data['smartresult']='dict'
data['client']='fanyideskweb'
data['salt']='15738863650513'
data['sign']='d1679873f7459843b7270f75acf0c6f0'
data['ts']='1573886365051'
data['bv']='75551116684a442e8625ebfc9e5af1ba'
data['doctype']='json'
data['version']='2.1'
data['keyfrom']='fanyi.web'
data['action']='FY_BY_CLICKBUTTION'
data=urllib.parse.urlencode(data).encode('utf-8')
#print(data)
response=test.urlopen(url,data)
html=response.read().decode('utf-8')

if __name__=="__main__":
    print("翻译的结果为")
    target=json.loads(html)
    type(target)
    a=target["translateResult"][0][0]['tgt']
    print(a)

代码解释:

1.这里面的data就是将Form Data里面的值给以字典的形式给存起来了,这个目的就是为了实现爬虫替我们进行数据的传输,而不需要网页来帮我们进行传输。
2.然后data[‘i’]这个是我们的数据,也就是正常情况下会进行传输的数据的对应的标号。这里我们把他的值用我们手动输入的值来进行代替,这样来实现对我们输入的值进行翻译的功能。(因为楼主两张图截取和代码使用的时间不相同,所以data里面的数据都不相同,只要到时候自己的代码里面的data是自己当时的Form Data就可以了)
3.里面的encode是进行编码,decode是进行解码
4.同时,我们获得的html是一个Json结构,所以我们需要使用Json这个包来对他进行转化,转化完之后target是一个多重的字典与列表的数值(想看一下的同学可以直接print(target)一下),然后我们通过之前对字典和列表的方法将其不断的变小,最后精准的找到我们所需要找到的翻译的值a,然后对a进行输出。

代码运行效果:

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值