手把手教學--Python爬取有道詞典

本篇文章做法參考了https://www.bilibili.com/video/av4050443/?p=55這個視頻中的方法,並在此基礎上加以修改,最終實現的結果如下:
在這裏插入圖片描述
在爬取有道詞典之前,我們應該先打開有道詞典的網址:http://fanyi.youdao.com/ , 然後 右鍵檢查—>network—>translate 一項
在這裏插入圖片描述
然後在有道翻譯界面輸入要翻譯的內容,點擊翻譯,在上述路徑下就可以看到自己想要翻譯的東西:
在這裏插入圖片描述
現在跳到Headers的地方,然後滾動到最下面,可以看到有一個Form Data的地方,這個下面展示了許多的數據,這些數據就是你在點擊翻譯的時候瀏覽器給服務器發送的數據:
在這裏插入圖片描述
針對這個東西,我們使用列表對其進行保存,並使用’utf-8’的方式進行解碼_(因爲在headers中信息告訴我們用utf-8)_。然後使用Python裏面的urllib.request()模塊對進行導入,接下來對導入的內容進行讀取,讀取的時候也使用“utf-8”進行解碼。使用json對最後的解碼結果進行再次的提取,將我們想要的信息提取出來*(這裏的內容參考上面給的鏈接視頻中的講解)。*
整個程序的設計思路是,在while(true)循環裏運行,當輸入爲特定值的時候,程序break跳出循環,否則程序將一直作爲翻譯器運行下去。
附上代碼:

import urllib.request as ur
import urllib.parse
import json
while(1):
    content = input("請輸入需要翻譯的內容:")
    if(content !='我想結束了'):
        url='http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
#        url_new = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
        data={}
        data['i'] = content
        data['type'] = 'AUTO'
        data['smartresult']='dict'
        data['client'] = 'fanyideskweb'
        data['salt'] = '15434915589221'
        data['sign'] = '46726cf43402922bd5500ad9c839ed5c'
        data['ts'] = '1543491558922'
        data['bv'] = 'db1af4c4f5ec7235b96c7182eecd9573'
        data['doctype'] = 'json'
        data['version'] = '2.1'
        data['keyfrom'] = 'fanyi.web'
        data['action'] = 'FY_BY_CLICKBUTTION'
        data['typoResult'] = 'false'

        data = urllib.parse.urlencode(data).encode('utf-8')
        response = ur.urlopen(url,data)
        html = response.read().decode('utf-8')

        target = json.loads(html)
        print("翻譯結果:%s"%(target['translateResult'][0][0]['tgt']))
    else:
        print("大爺下次繼續來玩啊")
        break

有道OS:天天拿我練手做測試,我不要面子的啊???

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章