python "爬虫+有道词典"实现一个简单翻译程序
抓包软件使用的是Fiddler4
新版的查询接口 比较负责,引入了salt和sign
http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&sessionFrom=http://fanyi.youdao.com/
这里使用老版本的查询接口
http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&smartresult=ugc&sessionFrom=http://www.youdao.com/
代码:
# coding=utf-8 import urllib
import urllib2
import json '''
功能说明:
根据输入要翻译的文字,进行有道自动翻译:
实现中文->英文、英语及其他语言->中文的转换
''' class YoudaoFanyi:
def __init__(self):
self.url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&smartresult=ugc&sessionFrom=http://www.youdao.com/'
self.headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.109 Safari/537.36",
} def get_encoded_payload(self, key):
'''
:param key: 带翻译的文字
:return: 返回url编码过的数据
'''
payload = {
"i": key,
'type': 'AUTO',
"doctype": "json",
"xmlVersion": "1.8",
"keyfrom": "fanyi.web",
"action": "FY_BY_CLICKBUTTON",
"typoResult": "true",
"ue": "UTF-8"
}
data = urllib.urlencode(payload)
return data def show_translate_result(self, html):
'''
解析返回的json数据
:param html: 返回的json数据
:return: None
'''
data = json.loads(html)
print '*' * 10
target = data['translateResult'][0][0]['tgt']
print target
if 'smartResult' in data:
result = data['smartResult']['entries']
result_str = '\n'.join(result[1:]) # result列表中第一个元素为""
print '有道词典结果'
print result_str
print '*' * 10 def translate(self, content):
'''
对输入的内容进行翻译
:param content: 带翻译的内容
:return: None
'''
payload = self.get_encoded_payload(content) # 获取经过url编码后的数据
request = urllib2.Request(
self.url,
data=payload,
headers=self.headers) # 构造请求
response = urllib2.urlopen(request) # 发送请求
self.show_translate_result(response.read()) # 解析结果 if __name__ == '__main__':
youdao = YoudaoFanyi()
while True:
key = raw_input("请输入你要翻译的文字[Q|quit 退出]: ").strip()
if key in ['Q', 'quit']:
break
youdao.translate(key)
python "爬虫+有道词典"实现一个简单翻译程序的更多相关文章
- python学习笔记:"爬虫+有道词典"实现一个简单的英译汉程序
1.有道的翻译 网页:www.youdao.com Fig1 Fig2 Fig3 Fig4 再次点击"自动翻译"->选中'Network'->选中'第一项',如下: F ...
- python爬虫系列(1)——一个简单的爬虫实例
本文主要实现一个简单的爬虫,目的是从一个百度贴吧页面下载图片. 1. 概述 本文主要实现一个简单的爬虫,目的是从一个百度贴吧页面下载图片.下载图片的步骤如下: 获取网页html文本内容:分析html中 ...
- python爬虫(2)——编写一个爬虫
一.URL的编码与解码 在python2中包含的urllib和urllib2,都是接受URL请求相关的模块.但是在python3中,却没有urllib2.实际上urllib2的功能在python3中可 ...
- 爬虫浅谈一:一个简单c#爬虫程序
这篇文章只是简单展示一个基于HTTP请求如何抓取数据的文章,如觉得简单的朋友,后续我们再慢慢深入研究探讨. 图1: 如图1,我们工作过程中,无论平台网站还是企业官网,总少不了新闻展示.如某天产品经理跟 ...
- 【应用】_有道词典客户端一个后缀名为sql的数据库。
[缘起] 在清理电脑磁盘的时候,看一看各安装文件夹有占用了多大容量,发现有道词典居然达140MB了,于是进去看看. 发现个有趣的文件:XXX.sql. 首先我们看一看它的安装文件夹的结构: Dict ...
- Python学习笔记23:Django构建一个简单的博客网站(一个)
在说如何下载和安装Django,本节将重点讨论如何使用Django站点. 一 新建project 命令:django-admin startproject mysite # 有的须要输入:django ...
- [Python]网络爬虫(六):一个简单的百度贴吧的小爬虫
转自:http://blog.csdn.net/pleasecallmewhy/article/details/8927832 # -*- coding: utf-8 -*- #----------- ...
- 我的第一个python web开发框架(2)——一个简单的小外包
第一部分说明 第一部分大概有20来章,主要讲的是一些开发常识.开发前中后期准备内容.开发环境与服务器部署环境安装设置.python基础框架结构与功能等内容,代码会比较简单. 本系列会以故事的方式,向大 ...
- 【python爬虫】对喜马拉雅上一个专辑的音频进行爬取并保存到本地
>>>内容基本框架: 1.爬虫目的 2.爬取过程 3.代码实现 4.爬取结果 >>>实验环境: python3.6版本,pycharm,电脑可上网. [一 爬虫目 ...
随机推荐
- vertical起作用的条件
只有当display为行内块元素时(inline-block),vertical-align:middle:才生效,或者将display设置为table-cell,需要多行文字居中时才需要,单行文字, ...
- BFS深度优先搜索 炸弹人
题面:一个人在一个坐标放炸弹,请问可以可以杀死的敌人数目最大是,并且输出该点的坐标 G代表敌人 .代表该位置可以走 "#"代表该位置存在障碍物 并且防止炸弹的蔓13 13 3 3 ...
- PTA——四舍五入
PTA 7-18 出租车计价 (15 分) #include<stdio.h> int main() { double s,w; int t; scanf("%lf %d&quo ...
- Chrome程序及数据位置变更到非系统盘
Chrome浏览器在Windows系统上安装过程,没有设置安装位置的步骤,所以默认是安装在C盘的.并且,若Chrome作为主要浏览器使用,随着时间的积累,数据文件会非常多.增加系统盘的负荷. Wind ...
- Running Elixir in Docker Containers
转自:https://www.poeticoding.com/running-elixir-in-docker-containers/ One of the wonderful things abou ...
- 普林斯顿数学指南(第一卷) (Timothy Gowers 著)
第I部分 引论 I.1 数学是做什么的 I.2 数学的语言和语法 I.3 一些基本的数学定义 I.4 数学研究的一般目的 第II部分 现代数学的起源 II.1 从数到数系 II.2 几何学 II.3 ...
- C# to IL 3 Selection and Repetition(选择和重复)
In IL, a label is a name followed by the colon sign i.e ":". It gives us the ability to ju ...
- 关于 php json float 出现很多位的问题
关于 php json float 出现很多位的问题 serialize_precision http://php.net/manual/en/ini.list.php https://wiki.ph ...
- [转]MySQL中乐观锁、悲观锁(共享锁、排他锁)简介
InnoDB与MyISAM Mysql 在5.5之前默认使用 MyISAM 存储引擎,之后使用 InnoDB. MyISAM 操作数据都是使用的表锁,你更新一条记录就要锁整个表,导致性能较低,并发不高 ...
- es query_string 和 match 的区别
默认使用 空格拆分成 多个 子项,并且 每个子项 都会去分词 查询.可以通过 default_operator 指定 子项之间的关系.默认是 或 . 然后 每个 子项前面可以使用 -+ 指定必须有 ...