今天是学习爬虫的次日了,看了网上不少初学者都喜欢爬取字典翻译。确实,有一个本身随时随地使用的翻译神器,省去了打开浏览器输入网址的那些繁琐,也腾出了很多时间。在这里我选择的是有道翻译,相比于百度翻译来讲,它的特色就是使用了post请求来获取json格式数据,而百度翻译使用的是get请求。由于博主暂时还处于爬虫的入门阶段,而网上的入门资料和图书馆借阅的书籍仍是python2相对多一些,因此我使用的库也是urllib2和urllib,但后面仍是确定会转到python3,毕竟python2到2020年官方就会中止支持了,还有一年多的时间。python
1.分析post请求的URL:http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=ruleweb
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.代码实现json
#!/usr/bin/env python # coding=utf-8 import urllib import urllib2 def youdao(): # 构建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; Intel Mac OS X 10.13; rv:59.0) Gecko/20100101 Firefox/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) #return ret if __name__ == "__main__": youdao()
原文出处:https://www.jzfblog.com/detail/16,文章的更新编辑以此连接为准。欢迎关注源站文章!浏览器