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还是要装的。