利用Python爬取翻译网站的翻译功能
现在我想分享一个利用Python技术,爬取一个翻译网站的翻译功能的小代码。
首先隆重介绍我们今天将要爬取的网站:http://fy.iciba.com/
咱们用Python中的urllib模块的功能进行爬取
众所周知,在爬虫的准备工作中我呢吧需要确定咱们爬取网站的url
那么,这个翻译网站的url如何确定呢?
我们进入网站,并单击F12打开开发者工具(这里我们用的谷歌浏览器)
这个网站的翻译功能分为两个部分:英译汉 汉译英
然后我决定先翻译两个单词玩玩!翻译的同事不关闭开发者工具,观察其变化。
事实证明这个网站的翻译能力还有待加强,毕竟每一个NBA球迷都知道laker是湖人的意思嘛!
在翻译的过程中我们发现他有一个地方在每一次翻译的时候都会增加一个:ajax.php?a=fy
打开这两个都可以在下面的Form Data中找到我们想要检索的单词
这个时候
我们发现这里的Request URL 是一个常量,每次的搜索时都不会改变,改变的部分仅限于底部的Form Data,所以我们可以确定这个搜索网站的base_url就是:
你小子啦!!
落实为代码就是
#确定URLbase_url="http://fy.iciba.com/ajax.php?a=fy"data={"f":"auto","t":"auto","w":word}data_str=parse.urlencode(data)# url=base_url+data_str
得到了URL就可以进行下一步伪装和封装了。
这两部分在一起说是因为基本没有难点,只需要根据书写规范填就好了。
伪装部分:这里我们需要伪装成浏览器访问这个网页
我们需要的伪装信息可以在开发者工具中的这里找到。
#伪装header={"User-Agent":" Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36"}
封装部分用代码表示为:
#封装response=request.Request(url=base_url,headers=header,data=bytes(data_str,encoding="utf-8"))req=request.urlopen(response).read().decode("utf-8")
以上,我们初步将这个网页整个爬取下来了。现在我们需要在Python中将这个翻译的功能移植过来,这里我们定义了一个类——fanyi() 翻译类中我们定义一个函数——translate 来完成我们翻译功能的移植
在这个网站中他的翻译功能分为两部分:英译汉 汉译英
那么很明显这两个功能需要分开来实现,我们现在在网站中分别让他翻译英语和汉语,来观察他的变化:翻译的同时打印翻译所得的翻译数据。
通过翻译单词“red”和汉语“红色的”,我们发现:
#中译英#{'status': 1, 'content': {'from': 'zh-CN', 'to': 'en-US', 'out': 'red', 'vendor': 'ciba', 'err_no': 0}}#英译中#{'status': 0, 'content': {'ph_en': 'red', 'ph_am': 'rɛd', 'ph_en_mp3': 'http://res.iciba.com/resource/amp3/oxford/0/3b/57/3b577c8f5bfa2cc523fac83910773295.mp3', 'ph_am_mp3': 'http://res.iciba.com/resource/amp3/1/0/bd/a9/bda9643ac6601722a28f238714274da4.mp3', 'ph_tts_mp3': 'http://res-tts.iciba.com/b/d/a/bda9643ac6601722a28f238714274da4.mp3', 'word_mean': ['adj. 红色的;(脸)涨红的;烧红的;红头发的;', 'n. 红色;红衣服;红颜料;红葡萄酒;']}}
我们发现状态码’status’,在中译英时状态码为1,英译中时为0,。
根据这个规律,我们可以进行判断了。代码如下
trans_word = translate(word)current_state=trans_word["status"]#在这里判断中译英if current_state==1:current_content=trans_word["content"]print(current_content["out"])#否则则汉译英else:current_content0=trans_word["content"]print(current_content0["word_mean"])
以上就是全部的逻辑思路,将思路与代码封装为一个类——fanyi中,代码如下:
from urllib import request,parse
import json
class fanyi():def translate(word):#确定URLbase_url="http://fy.iciba.com/ajax.php?a=fy"data={"f":"auto","t":"auto","w":word}data_str=parse.urlencode(data)# url=base_url+data_str#伪装header={"User-Agent":" Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36"}#封装response=request.Request(url=base_url,headers=header,data=bytes(data_str,encoding="utf-8"))req=request.urlopen(response).read().decode("utf-8")obj=json.loads(req)return objif __name__ == '__main__':word = input("请输入需要翻译的词句:")#print(trans_word)#中译英#{'status': 1, 'content': {'from': 'zh-CN', 'to': 'en-US', 'out': 'red', 'vendor': 'ciba', 'err_no': 0}}#英译中#{'status': 0, 'content': {'ph_en': 'red', 'ph_am': 'rɛd', 'ph_en_mp3': 'http://res.iciba.com/resource/amp3/oxford/0/3b/57/3b577c8f5bfa2cc523fac83910773295.mp3', 'ph_am_mp3': 'http://res.iciba.com/resource/amp3/1/0/bd/a9/bda9643ac6601722a28f238714274da4.mp3', 'ph_tts_mp3': 'http://res-tts.iciba.com/b/d/a/bda9643ac6601722a28f238714274da4.mp3', 'word_mean': ['adj. 红色的;(脸)涨红的;烧红的;红头发的;', 'n. 红色;红衣服;红颜料;红葡萄酒;']}}trans_word = translate(word)current_state=trans_word["status"]#在这里判断中译英if current_state==1:current_content=trans_word["content"]print(current_content["out"])#否则则汉译英else:current_content0=trans_word["content"]print(current_content0["word_mean"])fanyi()
运行后的效果如下:
运用爬虫的技术将翻译功能就这么从网站移植到了我们的Pycharm上了,是不是很简单?
以上
利用Python爬取翻译网站的翻译功能相关推荐
- Python 爬取外文网站并翻译中文和百度搜索验证
今天分享一个爬虫的简单实例,目标是爬取一个外文网站的博客信息,然后通过谷歌翻译成英文并使用百度搜索验证. 今天只是简单实现功能,以后有时间结合Scrapy框架综合的写一个博客. # _*_ codin ...
- Python爬取网站用户手机号_利用python爬取慕课网站上面课程
1.抓取网站情况介绍 抓取网站:http://www.imooc.com/course/list 抓取内容:要抓取的内容是全部的课程名称,课程简介,课程URL ,课程图片URL,课程人数(由于动态渲染 ...
- python 翻译库本地库_利用python爬取并翻译GEO数据库
原标题:利用python爬取并翻译GEO数据库 GEO数据库是NCBI创建并维护的基因表达数据库,始于2000年,收录了世界各国研究机构提交的高通量基因表达数据,现芯片集数据量高达12万以上.想要从这 ...
- python 怎么爬桌软件数据_如何利用Python爬取并分析红岭创投的数据?
第一步:爬取数据 通过 selenium + Firefox 的无头模式将需要的数据爬取出来,代码实现不在赘述,详细步骤可查看我的上一篇图文(如何利用Python爬取网易新闻), 由于 seleniu ...
- 利用python爬取丁香医生上新型肺炎数据,并下载到本地,附带经纬度信息
新增:国外疫情网站介绍 已更新:爬取国外疫情数据 已更新:新型肺炎历史数据下载 2020年3月27日补充: 制作了一个全球肺炎数据查询下载网站,效果如下: 访问地址:http://119.3.227. ...
- 利用 Python 爬取了近 3000 条单身女生的数据,究竟她们理想的择偶标准是什么?
灵感来源与学习:利用 Python 爬取了 13966 条运维招聘信息,我得出了哪些结论? 本文原创作者:壹加柒 本文来源链接:https://blog.csdn.net/yu1300000363/a ...
- 使用Python爬取马蜂窝网站的游记和照片
使用Python爬取马蜂窝网站的游记和照片 特殊原因需要在马蜂窝上爬取一些游记和照片作为后续分析处理的数据,参考网上一些类似的爬虫文章,自己尝试了一下,这次爬取的是马蜂窝上所有有关苏州的游记(包括游记 ...
- 利用python爬取股票交易数据
利用python爬取股票交易数据 分析网站 找到返回的url url = https://xueqiu.com/service/v5/stock/screener/quote/list?page={p ...
- 利用python爬取猫眼电影,分析《大侦探皮卡丘》|凹凸数读
利用python爬取猫眼电影,分析<大侦探皮卡丘>,看看当皮卡丘长出绒毛,"丑拒"还是"真香"都在猫眼短评里了. 本文首发于微信公众号<凹凸数 ...
- 利用python爬取qq个性网图片
利用python爬取qq个性网图片 网站头像布局大同小异,稍改代码即可爬取想要的头像. 不多bb,上代码. import requests from parsel import Selector im ...
最新文章
- pyglet and opengl -- 纹理映射以及动画
- Spring Cloud Feign设计原理
- Spring MVC开发环境搭建
- 网页图表Highcharts实践教程之图表代码构成
- Visual Studio2005下配置及运行NUnit
- Android 蓝牙开发(2)——低功耗蓝牙
- mysql数据库调试_mysql数据库调试
- HDU - 3506 Monkey Party
- 输入一个年份,并判断是否为闰年
- Redis RU330课程 Redis Security 第3周学习笔记
- beanshell断言_jmeter BeanShell断言(一)
- 登录验证时第一次帐号密码错误,第二次提交出现错误404,Could not find action or result: /zyf_shop/user_login.action
- 深度学习网络基础——感受野
- imgaug quokka_Quokka CMS的新功能和Beta版路线图
- 神通数据库connect by用法
- 无炫技:纯粹的Bert和Roberta
- 《北大青鸟 基于.NET的WEB程序设计 视频教程》32集全部
- HashMap中的遍历有序性探究
- scanner.nextInt与scanner.nextLine的使用
- python 递增递减数列