今天是學習爬蟲的次日了,看了網上不少初學者都喜歡爬取字典翻譯。確實,有一個本身隨時隨地使用的翻譯神器,省去了打開瀏覽器輸入網址的那些繁瑣,也騰出了很多時間。在這裏我選擇的是有道翻譯,相比於百度翻譯來講,它的特色就是使用了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,文章的更新編輯以此連接爲準。歡迎關注源站文章!瀏覽器