抓包软件使用的是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 "爬虫+有道词典"实现一个简单翻译程序的更多相关文章

  1. python学习笔记:"爬虫+有道词典"实现一个简单的英译汉程序

    1.有道的翻译 网页:www.youdao.com Fig1 Fig2 Fig3 Fig4 再次点击"自动翻译"->选中'Network'->选中'第一项',如下: F ...

  2. python爬虫系列(1)——一个简单的爬虫实例

    本文主要实现一个简单的爬虫,目的是从一个百度贴吧页面下载图片. 1. 概述 本文主要实现一个简单的爬虫,目的是从一个百度贴吧页面下载图片.下载图片的步骤如下: 获取网页html文本内容:分析html中 ...

  3. python爬虫(2)——编写一个爬虫

    一.URL的编码与解码 在python2中包含的urllib和urllib2,都是接受URL请求相关的模块.但是在python3中,却没有urllib2.实际上urllib2的功能在python3中可 ...

  4. 爬虫浅谈一:一个简单c#爬虫程序

    这篇文章只是简单展示一个基于HTTP请求如何抓取数据的文章,如觉得简单的朋友,后续我们再慢慢深入研究探讨. 图1: 如图1,我们工作过程中,无论平台网站还是企业官网,总少不了新闻展示.如某天产品经理跟 ...

  5. 【应用】_有道词典客户端一个后缀名为sql的数据库。

    [缘起] 在清理电脑磁盘的时候,看一看各安装文件夹有占用了多大容量,发现有道词典居然达140MB了,于是进去看看. 发现个有趣的文件:XXX.sql. 首先我们看一看它的安装文件夹的结构: Dict ...

  6. Python学习笔记23:Django构建一个简单的博客网站(一个)

    在说如何下载和安装Django,本节将重点讨论如何使用Django站点. 一 新建project 命令:django-admin startproject mysite # 有的须要输入:django ...

  7. [Python]网络爬虫(六):一个简单的百度贴吧的小爬虫

    转自:http://blog.csdn.net/pleasecallmewhy/article/details/8927832 # -*- coding: utf-8 -*- #----------- ...

  8. 我的第一个python web开发框架(2)——一个简单的小外包

    第一部分说明 第一部分大概有20来章,主要讲的是一些开发常识.开发前中后期准备内容.开发环境与服务器部署环境安装设置.python基础框架结构与功能等内容,代码会比较简单. 本系列会以故事的方式,向大 ...

  9. 【python爬虫】对喜马拉雅上一个专辑的音频进行爬取并保存到本地

    >>>内容基本框架: 1.爬虫目的 2.爬取过程 3.代码实现 4.爬取结果  >>>实验环境: python3.6版本,pycharm,电脑可上网. [一 爬虫目 ...

随机推荐

  1. CCF-棋局评估 201803-04(版本 2.0)------(之前写了一个臃肿的1.0版 ,还沾沾自喜 233)

    核心 : 博弈搜索树     双方得分互为相反数 dfs (x,y,player): 玩家player下完(x,y)之后的得分最大值 易错: 先判断输赢,再判断平局 待改进: check() 函数写的 ...

  2. MyEclipse 优化:之占用CPU过高100%

    原因是  jsp文件代码有4000行左右,MyEclipse打开jsp的时候会越来越慢.CPU占用会越来越高,因此,需要用别的编辑器打开jsp文件,不用在MyEclipse中编辑jsp文件. 我用的是 ...

  3. 创建新用户,及用新用户名和密码登录--------------DCL

    创建用户基本语法:    creat user 用户名@"ip地址" identified by "密码" 登录数据库以后:用show databases; 显 ...

  4. 使用C语言简单模拟Linux的cat程序

    先给出源码 //fileio.c #include<stdio.h> #include<stdlib.h> #include<fcntl.h> void print ...

  5. notify和notifyAll的区别

    转自:http://www.importnew.com/16453.html 如果某些线程在等待某些条件触发,那当那些条件为真时,你可以用 notify 和 notifyAll 来通知那些等待中的线程 ...

  6. Jmeter的NON-GUI模式

    一般来讲,Jmeter执行压测,都是用Jmeter的命令模式,脚本调试好, 测试脚本能够大大缩减所需要的系统资源. 1.1命令介绍: jmeter -n -t <testplan filenam ...

  7. es中级部分知识点总结

    --------------------------------------------------------------- 搜索开始-------------------------------- ...

  8. Spring IOC(一)概览

    Spring ioc源码解析这一系列文章会比较枯燥,但是只要坚持下去,总会有收获,一回生二回熟,没有第一次,哪有下一次... 本系列目录: Spring IOC(一)概览 Spring IOC(二)容 ...

  9. Pullword 分词工具

    def get_response(self, txt): """ 热词工具 """ datas = [] request_lists = [ ...

  10. ASP.NET AJAX入门系列(2):使用ScriptManager控件

    ScriptManager控件包括在ASP.NET 2.0 AJAX Extensions中,它用来处理页面上的所有组件以及页面局部更新,生成相关的客户端代理脚本以便能够在JavaScript中访问W ...