Python爬虫学习之翻译小程序

 更新时间:2019年07月30日 15:07:46   作者:罗思洋  
这篇文章主要为大家详细介绍了Python爬虫学习之翻译小程序,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本次博客分享的内容为基于有道在线翻译实现一个实时翻译小程序,本次任务是参考小甲鱼的书《零基础入门学习Python》完成的,书中代码对于当前的有道词典并不适用,使用后无法实现翻译功能,在网上进行学习之后解决了这一问题。

2、前置工作

1)由于有道在线翻译是“反爬虫”的,所以在编写该程序的时候需要使用到User-Agent,通过使用request模块中的headers参数,对它进行适当的设置就可以将程序访问伪装为浏览器访问,有两种方法可以添加headers参数,我使用的方法是通过add_header()方法往Request对象中添加headers参数;

2)我使用的是360浏览器,获取它User-Agent的方法是在地址栏中输入about:version即可,结果如下图:

3)在获得该参数后还需要获取有道翻译的data数据,首先先打开有道翻译界面,然后打开其审查元素,点击netwoek,然后在翻译框内输入word点击翻译,找到如下图所示的位置:

4)一直往下滑动,就可以找到data参数,在编程时的设置就需要按照这里来完成,如下图:

其中在headers中需要设置的Referer及User-Agent也在上图中可以找到。

3、任务代码

在程序的编写中需要使用到许多python模块,包括urllib、json 、time等等。

对于urllib在上一篇博客中已经用到了,它的作用是一个高级的 web 交流库,其核心功能就是模仿web浏览器等客户端,去请求相应的资源,并返回一个类文件对象。

json是一种轻量级的数据交换格式,易于人阅读和编写,我们需要使用json.loads 解码 json数据。

time是用于获取当前时间戳并延迟提交数据,延迟提交数据虽然会降低工作效率,但是也降低了ip被网页拉黑的风险。

具体的代码如下图所示:

import urllib.request #导入urllib.request库
import urllib.parse #导入urllib.parse库
import json #导入json库
import time #导入time库
import random #导入random库
import hashlib #导入hashlib库
url = "http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule" #有道翻译的网址
while True: #定义死循环
 fanyi = input("请输入想要翻译的内容:") #用户输入想要翻译的内容
 #设置API接口
 a = 'fanyideskweb'   #设置client
 b = fanyi    #需要翻译的内容
 c = str(int(time.time() * 1000)+ random.randint(1, 10)) #当前时间戳
 d = 'rY0D^0\'nM0}g5Mm1z%1G4'   #加密字符
 sign = hashlib.md5((a +b +c + d).encode('utf - 8')).hexdigest() #根据内容进行md5加密
 #设置data,按照网页审查元素设置即可
 data = {}
 data['i'] = fanyi
 data['from'] = 'AUTO'
 data['to'] = 'AUTO'
 data['smartresult'] = 'dict'
 data['client'] = 'fanyideskweb'
 data['salt'] = c
 data['sign'] = sign
 data['doctype'] = 'json'
 data['version'] = '2.1'
 data['keyform'] = 'fanyi.web'
 data['action'] = 'FY_BY_CLICKBUTTION'
 data['typoResult'] = 'true'
 data = urllib.parse.urlencode(data).encode('utf - 8') #urlencode转换data数据并编码为utf-8码
 req = urllib.request.Request(url, data)  #指定网页,包含url、data和head
 #伪造浏览器访问
 req.add_header('Referer','http://fanyi.youdao.com')
 req.add_header('User - Agent','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36 QIHU 360SE')
 response = urllib.request.urlopen(req)  #post方式打开指定网页
 html = response.read()   #读取网页信息
 html = html.decode('utf - 8')  #将utf-8码解码为unicode码
 target = json.loads(html)   #把json页面转换为一个字典
 print("翻译结果: %s" % (target['translateResult'][0][0]['tgt'])) #输出
 time.sleep(5) #延迟提交数据

运行结果如下图所示:

4、总结

书上的知识是否正确还需要自己敲一边代码才能进行验证,所以说动手才是最重要的,本次制作这个翻译小程序,由于书本知识的错误,我通过网上查找资料才解决了这个问题,从中也学到了许多知识,希望自己能继续加油,学到更多的知识。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Python 3中print函数的使用方法总结

    Python 3中print函数的使用方法总结

    这篇文章主要给大家总结介绍了关于Python 3中print函数的使用方法,python3中的print函数和之前版本的用法相差很多,本文通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-08-08
  • 详解python 发送邮件实例代码

    详解python 发送邮件实例代码

    本篇文章主要介绍了python 发送邮件实例代码,详细的介绍了各种方式发送邮件,包括文件形式的邮件、HTML形式的邮件、带图片的HTML邮件等,有兴趣的可以了解一下。
    2016-12-12
  • 使用Python3中的gettext模块翻译Python源码以支持多语言

    使用Python3中的gettext模块翻译Python源码以支持多语言

    这篇文章主要介绍了使用Python3中的gettext模块翻译Python源码以支持多语言,其中翻译Python源码只是作为示例以展示gettext的功能和用法,需要的朋友可以参考下
    2015-03-03
  • Python matplotlib.pyplot.hist()绘制直方图的方法实例

    Python matplotlib.pyplot.hist()绘制直方图的方法实例

    直方图(Histogram)又称质量分布图,是一种统计报告图,由一系列高度不等的纵向条纹或线段表示数据分布的情况,一般用横轴表示数据类型,纵轴表示分布情况,下面这篇文章主要给大家介绍了关于Python matplotlib.pyplot.hist()绘制直方图的相关资料,需要的朋友可以参考下
    2022-06-06
  • 如何实现更换Jupyter Notebook内核Python版本

    如何实现更换Jupyter Notebook内核Python版本

    这篇文章主要介绍了如何实现更换Jupyter Notebook内核Python版本,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • Python首次安装后运行报错(0xc000007b)的解决方法

    Python首次安装后运行报错(0xc000007b)的解决方法

    最近在安装完Python后运行发现居然报错了,错误代码是0xc000007b,于是通过往上查找发现是因为首次安装Python缺乏VC++库的原因,下面通过这篇文章看看如何解决这个问题吧。
    2016-10-10
  • 浅谈pandas中DataFrame关于显示值省略的解决方法

    浅谈pandas中DataFrame关于显示值省略的解决方法

    下面小编就为大家分享一篇浅谈pandas中DataFrame关于显示值省略的解决方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • python制作定时发送信息脚本的实现思路

    python制作定时发送信息脚本的实现思路

    这篇文章主要介绍了python实现企业微信定时发送文本消息的实例代码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • python读写删除复制文件操作方法详细实例总结

    python读写删除复制文件操作方法详细实例总结

    这篇文章主要介绍了python读写删除复制文件操作方法详细实例总结,需要的朋友可以参考下
    2021-04-04
  • python线程池如何使用

    python线程池如何使用

    在本篇文章里小编给各位分享的是关于python中的线程池用法及实例内容,需要的朋友们可以参考下。
    2020-05-05

最新评论