我跟有道翻译干起来了

1.先把需要用的url和queryString以及报头准备好

<pre>url = http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule&sessionFrom

User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36

data={
"i":"python%0A",
"from":"AUTO",
"to":"AUTO",
"smartresult":"dict",
"client":"fanyideskweb",
"salt":"1506836328053",
"sign":"945d7dd737a4fb4327914ff3f3bf7d90",
"doctype":"json",
"version":"2.1",
"keyfrom":"fanyi.web",
"action":"FY_BY_ENTER",
"typoResult":"true"
}

</pre>

2.然后就一早晨跟有道网页翻译开始无休止的战斗,被一次次地教做人。。。。

下面是亲生的代码:

#!/usr/bin/env python
#-*- coding:utf-8 -*-
import urllib
import urllib2

##url = "http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&sessionFrom="

下面是用上面这个Url进行操作返回的,感觉不全面。
##>>>
##Enter the word:中国
##{"type":"ZH_CN2EN","errorCode":0,"elapsedTime":0,"translateResult":[[{"src":"中国","tgt":"China"}]],"smartResult":{"type":1,"entries":["","China"]}}

<font color=red>#不能用url = "http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule&sessionFrom="这个url,这个我怀疑是onlyonce的意思</font>

url = "http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&sessionFrom"
这个是用另一个url进行操作返回的结果,能稍微全面一点。
##>>>
##Enter the word:python
##{"type":"EN2ZH_CN","errorCode":0,"elapsedTime":1,"translateResult":[[{"src":"python","tgt":"python"}]],"smartResult":{"type":1,"entries":["","n. 巨蟒;大蟒","n. (法)皮东(人名)"]}}

##head="Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36"
queryword = raw_input("Enter the word:")
##data = {}
##data["i"] = queryword
##data["from"]="AUTO"
##data["to"]="AUTO"
##data["smartresult"]="dict"
##data["client"]="fanyideskweb"
##data["salt"]="502865709143"
##data["sign"]="e7b725d55dd02ab7b3a17c44170950ad"
##data["doctype"]="json"
##data["version"]="2.1"
##data["keyfrom"]="fanyi.web"
##data["action"]="FY_BY_CLlCKBUTTON"
##data["typoResult"]="true"

header = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36"
}
data={
"i":queryword,
"from":"AUTO",
"to":"AUTO",
"smartresult":"dict",
"client":"fanyideskweb",
"salt":"1506836328053",
"sign":"945d7dd737a4fb4327914ff3f3bf7d90",
"doctype":"json",
"version":"2.1",
"keyfrom":"fanyi.web",
"action":"FY_BY_ENTER",
"typoResult":"true"
}

data = urllib.urlencode(data).encode("utf-8")

#request = urllib2.Request(url,data,header)
request = urllib2.Request(url,data=data,headers=header)
##response = urllib2.urlopen(request)

html=urllib2.urlopen(request).read().decode("utf-8")
#html = urllib2.urlopen(request).read().decode("utf-8")
print html

下面是网上找的代码:

# -*- coding: utf-8 -*-
import urllib
import urllib2
import json
#Request URL
while 1:
    i = raw_input("请输入要翻译的文字:")
    if i==‘!q‘:
        print("退出")
        break
    url = "http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&sessionFrom="
    data ={}
#方案一
#head={}
#head["User-Agent"]="Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36"
#方案二
    head="Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36"
# From Data 全部属性
    data["i"]=i
    data["from"]="AUTO"
    data["to"]="AUTO"
    data["smartresult"]="dict"
    data["client"]="fanyideskweb"
    data["salt"]="502865709143"
    data["sign"]="e7b725d55dd02ab7b3a17c44170950ad"
    data["doctype"]="json"
    data["version"]="2.1"
    data["keyfrom"]="fanyi.web"
    data["action"]="FY_BY_CLlCKBUTTON"
    data["typoResult"]="true"
#转码
    data =urllib.urlencode(data).encode("utf-8")
#打开链接
#方案一
#req = urllib.request.Request(url,data,head)#Request设置
#方案二
    req = urllib2.Request(url,data)
    req.add_header("User-Agent",head)
    response = urllib2.urlopen(req)
#转为Unicode
    html=response.read().decode("utf-8") #输出为json格式
#json文件读取
    target = json.loads(html)
#最终字典列表输出
    print(target["translateResult"][0][0]["tgt"])

总结。。。。。。。。

一个初学者的血泪,忙活了一早上,查各种资料,各种改代码,最后被一个小写的o给干翻了。。。,有"="跟没有“=”这货是不一样的。心酸。

心中万马奔腾,但是这个X还是要装的。

时间: 2024-07-31 15:07:44

我跟有道翻译干起来了的相关文章

如何调用有道翻译API(Java,HTTP)

申请Key 首先如图进入有道翻译,在下方点击"有道翻译API". 紧接着来调用数据接口,按提示完成下列输入框. 如下图所示,已经申请成功了. 下图是官方给的示例,可以有xml和json.jsonp等三种数据格式. 代码(Java) public class TestPost { public static void main(String[] args) { new ReadByPost().start(); } } class ReadByPost extends Thread{ @

linux下终端使用有道翻译

linux下面使用终端,有的时候需要查找一个单词,都需要打开浏览器通过网页来查找单词,这样效率会会非常的繁琐,并且也会降低工作效率. 之前刚开始看python文档的时候,看过别人说的一个用python写的在终端下查单词的脚本,当时没记录下来,后来也没找到. 今天本来是想解决我网站的显示的问题,但是想到这个不做了就感觉哪里不对,一股强迫症的感觉.. 自己用python写了一个脚本,用的是有道翻译的api,感谢有道. 使用方法为,python youdao.py  word  ,单词 word为你要

Java接口测试之使用有道翻译API

写接口测试框架,找了有道翻译API来当测试数据 package com.httpGetTest; import java.beans.Encoder; import java.net.URLEncoder; import java.security.MessageDigest; import java.util.HashMap; import java.util.Map; public class CreatHttpUrl { public static void main(String[] a

Android应用记录一:有道翻译API调用

因为某些原因,我需要记单词,而且讨厌广告,所以就想着自己写个能够查自己不认识的单词并且以后可以随时查看的APP. 首先我需要调用一个翻译API,中文翻译比较好用的API有有道翻译API,百度翻译API等,因为先期用过百度地图API,觉得很好用,所以我先查阅了百度翻译API 觉得还不错,因为我写的APP是给自己用的,所以这肯定够用,然后我就申请了一个API接口,当我看了文档之后,百度为了安全的原因,在现版本的接口中加入了签名,通过一定的输入序列形成MD5序列,而这个感觉有点麻烦,虽然我后来试了下,

爬虫实例2——有道翻译

这个爬虫可以实现有道翻译的功能,支持中译英和英译中,主要使用了requests和json这两个模块. # -*- coding: utf-8 -*- import json import requests def translate(sentence):     url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&smartresult=ugc'     data = {         &q

python爬虫(10)身边的翻译专家——获取有道翻译结果

本文目的:使用python 实现翻译效果 思路:有道翻译可以直接翻译内容,观察它的网页内容以及URL可以发现,它的基本url 和将要翻译的内容组合起来就是最后翻译的页面 比如: 有道中英文翻译的网址是:http://dict.youdao.com/ 将要翻译的内容是: I'm a Chinese 点击一下翻译,然后出现的含有翻译结果页面的地址是:  http://dict.youdao.com/w/eng/I'm%20a%20chinese/#keyfrom=dict2.index 虽然这个网址

Android使用有道翻译API实如今线翻译功能

在Android应用中,加入在线翻译的功能,这里调用的是有道翻译的API. 使用有道翻译API.首先要申请一个key,申请地址为:有道翻译API申请地址. 申请之后就会得到一个keyfrom和一个key. 获取翻译结果的数据接口为:http://fanyi.youdao.com/openapi.do? keyfrom=<keyfrom>&key=<key>&type=data&doctype=<doctype>&version=1.1&a

有道翻译接口Api 直接提交中文返回乱码

有道翻译接口Api http://fanyi.youdao.com/openapi.do?keyfrom=***&key=***&type=data&doctype=json&version=1.1&q=word word就是查询内容,如hello,但是查询中文“你好”出现返回乱码. 解决办法:String lastedword=URLEncoder.encode(word, "UTF-8"); http://fanyi.youdao.com/o

Android使用有道翻译API实现在线翻译功能

在Android应用中,添加在线翻译的功能,这里调用的是有道翻译的API. 使用有道翻译API,首先要申请一个key,申请地址为:有道翻译API申请地址. 申请之后就会得到一个keyfrom和一个key. 获取翻译结果的数据接口为:http://fanyi.youdao.com/openapi.do?keyfrom=<keyfrom>&key=<key>&type=data&doctype=<doctype>&version=1.1&am