Python爬取有道詞典,有道的反爬很難嗎?也就這樣啊!

pythonlaodi發表於2020-12-08

前言

大家好

​ 最近python爬蟲有點火啊,啥python爬取馬保國視訊……我也來湊個熱鬧,今天我們來試著做個翻譯軟體……不是不是,說錯了,今天我們來試著提交翻譯內容並爬取翻譯結果

主要內容

PS:如有需要Python學習資料的小夥伴可以加點選下方連結自行獲取

python免費學習資料以及群交流解答點選即可加入

材料

1.Python 3.8.4

2.電腦一臺(應該不至於有”窮苦人家“連一臺電腦都沒有吧)

3.Google瀏覽器(其他的也行,但我是用的Google)

寫程式前準備

開啟Google瀏覽器,找的有道詞典的翻譯網頁(http://fanyi.youdao.com/)

開啟後摁F12開啟開發者模式,找Network選項卡,點選Network選項卡,然後重新整理一下網頁

然後翻譯一段文字,隨便啥都行(我用的程式設計師的傳統:hello world),然後點選翻譯

在選項卡中找到以translate開頭的post檔案

 

 

箭頭的地方才是真正的提交地址

記住他,寫程式碼時要用

 

這個是提交電腦的基本資訊,記住他,等會兒要用,等會兒偽裝成電腦時可以用,因為電腦會有基本資訊,而如果是python的話會顯示成python3.8.4(因為我的版本是3.8.4),從而容易被伺服器禁入

 

等會兒還要用

好,準備工作做完了,接下來開始幹正事了

開始編寫爬蟲程式碼

下面是我寫的程式碼,具體我就不細說了

#匯入urllib庫
import urllib.request
import urllib.parse
import json

while True: #無限迴圈
    content = input("請輸入您要翻譯的內容(輸入 !!! 退出程式): ")
    #設定退出條件
    if content == '!!!':
        break

    url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule' #選擇要爬取的網頁,上面找過了
    #加上一個帽子,減少被發現的概率(下面head列表的內容就是上面找的)
    head = {}
    head['User - Agent'] = '請替換'

    #偽裝計算機提交翻譯申請(下面的內容也在在上面有過,最好根據自己的進行修改)
    data = {}
    data['type'] = 'AUTO'
    data['i'] = content
    data['doctype'] = 'json'
    data['version'] = '2.1'
    data['keyfrom:'] = 'fanyi.web'
    data['ue'] = 'UTF-8'
    data['typoResult'] = 'true'
    data = urllib.parse.urlencode(data).encode('utf-8')

    response = urllib.request.urlopen(url, data)
    #解碼
    html = response.read().decode('utf-8')

    paper = json.loads(html)

    #列印翻譯結果
    print("翻譯結果: %s" % (paper['translateResult'][0][0]['tgt']))

執行結果

 


 

 

相關文章