今天是学习爬虫的第二天了,看了网上很多初学者都喜欢爬取字典翻译。确实,有一个自己随时随地使用的翻译神器,省去了打开浏览器输入网址的那些繁琐,也腾出了不少时间。在这里我选择的是有道翻译,相比于百度翻译来说,它的特点就是使用了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/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,文章的更新编辑以此链接为准。欢迎关注源站文章!
来源:oschina
链接:https://my.oschina.net/u/3945890/blog/2051040