使用Urllib2制作有道翻译器
今天是学习爬虫的第二天了,看了网上很多初学者都喜欢爬取字典翻译。确实,有一个自己随时随地使用的翻译神器,省去了打开浏览器输入网址的那些繁琐,也腾出了不少时间。在这里我选择的是有道翻译,相比于百度翻译来说,它的特点就是使用了post请求来获取json格式数据,而百度翻译使用的是get请求。因为博主暂时还处于爬虫的入门阶段,而网上的入门资料和图书馆借阅的书籍还是python2相对多一些,所以我使用的库也是urllib2和urllib,但后面还是肯定会转到python3,毕竟python2到2020年官方就会停止支持了,还有一年多的时间。 1.分析post请求的URL:http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule 2.查看Form Data 其为post请求的数据,将其粘帖到sublime编辑器下,使用正则替换,将其转化为字典的形式 "i":"python", "from":"AUTO", "to":"AUTO", "smartresult":"dict", "client":"fanyideskweb", "salt":"1529759898442", "sign":"8fa19ef594cd75bff554ef1f03dc5901", "doctype":"json", "version":"2.1", "keyfrom":"fanyi.web", "action":"FY_BY_REALTIME", "typoResult":"false", 3.代码实现 #!/usr/bin/envpython #coding=utf-8 importurllib importurllib2 defyoudao(): #构建url链接 #url='http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule' #这里要去掉?号前面的_o,不然会进行加密算法,导致失败 url='http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule' #构建请求头 headers={ "User-Agent":'Mozilla/5.0(Macintosh;IntelMacOSX10.13;rv:59.0)Gecko/20100101Firefox/59.0' } words=raw_input("请输入要翻译的内容:") #构建请求体 format_data={ 'i':words, 'from':'AUTO', 'to':'AUTO', 'smartresult':'dict', 'client':'fanyideskweb', 'salt':'1526368137702', 'sign':'f0cd13ef1919531ec9a66516ceb261a5', 'doctype':'json', 'version':'2.1', 'keyfrom':'fanyi.web', 'action':'FY_BY_REALTIME', 'typoResult':'false' } #进行url编码 format_data=urllib.urlencode(format_data) #获取request文件(传入了data参数,就是post请求) request=urllib2.Request(url,data=format_data,headers=headers) #打开请求文件 response=urllib2.urlopen(request) #读取文件内容 content=response.read() content=eval(content) ret=content["translateResult"][0][0]['tgt'] print(ret) #returnret if__name__=="__main__": youdao()