python爬有道翻译
在有道翻译页面中打开开发者工具,在Headers板块找到Request URL以及相应的data。
import urllib.request
import urllib.parse
import json content=input('请输入需要翻译的内容:') #_o要去掉,否则会出先error_code:50的报错
url='http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule' data={}
#开发者工具里有,i和doctype键不可少
data['i']=content
data['from']='AUTO'
data['to']='AUTO'
data['smartresult']='dict'
data['client']='fanyideskweb'
data['salt']=''
data['sign']='5b0565493d812bc5e713b895c12d615d'
data['doctype']='json'
data['version']='2.1'
data['keyfrom']='fanyi.web'
data['action']='FY_BY_REALTTIME' #将字典类型的请求数据转化为url编码,并将编码类型转变为'utf-8'类型
data=urllib.parse.urlencode(data).encode('utf-8') #向url请求data的响应结果
response=urllib.request.urlopen(url,data) #读取返回数据内容,decode是转换返回数据的格式为str
html=response.read().decode('utf-8') #使用json将字符串转化成字典
target=json.loads(html) #结果在key='translateResult'的三层列表的key='tgt'中
print("翻译结果:%s" %(target['translateResult'][0][0]['tgt']))
上面这种很大可能被有道网页给识别出来不是人工在访问,而是代码在访问。
此时我们可以加个‘User-Agent’代理。通过设置User Agent来达到隐藏身份的目的,一般情况下浏览器是通过User-Agent来识别的。
通过调用urllib.request.Request()来设置UA。
class urllib.request.Request(url, data=None, headers={}, origin_req_host=None, unverifiable=False, method=None)
This class is an abstraction of a URL request.
url should be a string containing a valid URL.
headers should be a dictionary #headers要为字典
有两种方法设置User Agent:
1.在创建Request对象的时候,填入headers参数(包含User Agent信息),这个Headers参数要求为字典;
2.在创建Request对象的时候不添加headers参数,在创建完成之后,使用add_header()的方法,添加headers。
import urllib.request
import urllib.parse
import json
import time while True: content=input('请输入需要翻译的内容(输入"q!退出程序"):') if content=='q!':
break; #_o要去掉,否则会出先error_code:50的报错
url='http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule' '''
第一种方法
head={}
head['User-Agent']='Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36'
''' data={}
#开发者工具里有,i和doctype键不可少
data['i']=content
data['from']='AUTO'
data['to']='AUTO'
data['smartresult']='dict'
data['client']='fanyideskweb'
data['salt']=''
data['sign']='5b0565493d812bc5e713b895c12d615d'
data['doctype']='json'
data['version']='2.1'
data['keyfrom']='fanyi.web'
data['action']='FY_BY_REALTTIME' #将字典类型的请求数据转化为url编码,并将编码类型转变为'utf-8'类型
data=urllib.parse.urlencode(data).encode('utf-8') '''
第一种方法
req=urllib.request.Request(url,data,head)
'''
#第二种方法设置User Agent
#创建Request对象
req=urllib.request.Request(url,data)
req.add_header('User-Agent','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36') #传入创建好的Request对象
response=urllib.request.urlopen(req) #读取响应信息并解码
html=response.read().decode('utf-8') #使用json将字符串转化成字典
target=json.loads(html) #结果在key='translateResult'的三层列表的key='tgt'中
print("翻译结果:%s" %(target['translateResult'][0][0]['tgt'])) #5秒一次
time.sleep(5)
python爬有道翻译的更多相关文章
- Python 实现有道翻译命令行版
一.个人需求 由于一直用Linux系统,对于词典的支持特别不好,对于我这英语渣渣的人来说,当看英文文档就一直卡壳,之前用惯了有道词典,感觉很不错,虽然有网页版的但是对于全站英文的网页来说并不支持.索性 ...
- [Python] 使用有道翻译API
Python 使用youdao (有道翻译)API 想写一个给自己记录背单词状况的软件,需要获取英文单词的中文释义(基本功能).考虑使用有道翻译的API实现获取英文单词的中文释义的方法. 获取API_ ...
- Python 使用有道翻译
最近想将一些句子翻译成不同的语言,最开始想使用Python向有道发送请求包的方式进行翻译. 这种翻译方式可行,不过只能翻译默认语言,不能选定语言,于是我研究了一下如何构造请求参数,其中有两个参数最复杂 ...
- python利用有道翻译实现“语言翻译器”的功能
import urllib.request import urllib.parse import json while True: content = input('请输入需要翻译的内容(退出输入Q) ...
- Python制作有道翻译小工具
该工具主要是利用了爬虫,爬取web有道翻译的内容. 然后利用简易GUI来可视化结果. 首先我们进入有道词典的首页,并点击翻译结果的审查元素 之后request响应网页,并分析网页,定位到翻译结果. 使 ...
- python爬虫-有道翻译-js加密破解
有道翻译-js加密破解 这是本地爬取的网址:http://fanyi.youdao.com/ 一.分析请求 我们在页面中输入:水果,翻译后的英文就是:fruit.请求携带的参数有很多,先将参数数据保存 ...
- python调用有道翻译api实现翻译
通过调用有道翻译的api,实现中译英.其他语言译中文 代码: # coding=utf-8 import urllib import urllib2 import json import time i ...
- python爬取百度翻译返回:{'error': 997, 'from': 'zh', 'to': 'en', 'query 问题
解决办法: 修改url为手机版的地址:http://fanyi.baidu.com/basetrans User-Agent也用手机版的 测试代码: # -*- coding: utf-8 -*- & ...
- python爬取网易翻译 和MD5加密
一.程序需要知识 1.python中随机数的生成 # 生成 0 ~ 9 之间的随机数 # 导入 random(随机数) 模块 import random print(random.randint(0, ...
随机推荐
- LODOP纸张/打印机/份数/打印方向/双面打印 简短问答
纸张#如何设置纸张纸张设置,参考样例5 http://www.c-lodop.com/demolist/PrintSample5.html纸张的一些优先级 http://www.c-lodop.com ...
- [简短问答]SET_PRINT_STYLEA相关简短问答
常见1:SET_PRINT_STYLEA(0,.....)放在那里参考官网下载中心的LODOP技术手册SET_PRINT_STYLEA篇,0代表前面紧跟着的打印项,放在需要该样式的打印项后面紧跟着. ...
- [LeetCode] 119. Pascal's Triangle II 杨辉三角 II
Given an index k, return the kth row of the Pascal's triangle. For example, given k = 3,Return [1,3, ...
- 记录一次使用iisnode部署node项目遇到的坑!
前言:最近因为项目原因,需要在IIS下部署node项目,在此之前,曾经部署过类似的项目,因此在这次部署还算比较顺利,只是在其中遇到了几个比较坑的问题,所以这次使用博客记录下来,如有园友遇到过类似问题, ...
- vscode添加vue文件模板
文件->首选项->用户代码片段->输入vue,打开vue.json 添加模板json "Print to console": { "prefix&quo ...
- WordPress概览
"绝望是一种罪过"-------------------------<老人与海> WordPress 是世界上使用最广泛的博客系统,是一款开源的PHP软件,在GNU通用 ...
- 启动3ds Max报 d3dx9_43.dll丢失 解决方法
d3dx9_43.dll文件与Microsoft DirectX关联.负责启动基于Windows的游戏和高级图形程序. 在360安全卫士上搜索了 DirectX 下载了这个修复工具 运行应用 点击修复 ...
- sql server版本特性简介、版本介绍简介
1.SQL Server 版本简介 1.1.sql server的版本信息 年 代 版 本 大版本号 1993年 SQL Server for Windows NT 4.21 1994年 ...
- Linux07 查找文件(find、locate)
一.一般查找:find find PATH -name FILENAME 我们也可是使用 ‘*’ 通配符来模糊匹配要查找的文件名 二.数据库查找:locate locate FILENAME ...
- STM32F030C8T6低功耗笔记
2018年5月8日 这个芯片的低功耗搞了好久了,刚开始是7mA降不下去,然后是降到了1mA,到现在的200uA,还是有地方没有弄好,目标是降到50uA左右,目前遇到了问题,进入STOP模式的时候降到了 ...