前言本文的文字及圖片來源於網路,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯繫我們以作處理。作者:OSinooO 本人屬於python新手,剛學習的 python爬蟲基礎迫不及待地想試一試,看了論壇里大佬們寫的線上翻譯爬蟲程式,想著自己把它寫出來,以下是我爬微軟翻譯的過 ...
前言
本文的文字及圖片來源於網路,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯繫我們以作處理。
作者:OSinooO
本人屬於python新手,剛學習的 python爬蟲基礎迫不及待地想試一試,看了論壇里大佬們寫的線上翻譯爬蟲程式,想著自己把它寫出來,以下是我爬微軟翻譯的過程,作為筆記記錄下來:
1.獲取信息
要實現線上翻譯過程,首先要獲得目標網站的信息,我們先打開微軟必應翻譯的官網(https://cn.bing.com/translator):
我們需要獲得它的翻譯請求和響應信息,操作如下:
(1)右鍵“檢查”(用的Google Chrome瀏覽器),進入這個界面:
也可以通過右上角》更多工具》開發者工具進入。
(2)選擇“Network”
(3)輸入我們想翻譯的內容,先輸入“hello”,選擇簡體中文:
可以看到右邊出了很多抓到的包,點開看一下。
(4)找到response(響應)裡面出現了翻譯結果的包
(5)接下來就是獲取URL和data信息了,在“Headers”部分就可以看到。這裡的URL是處理我們請求翻譯的網頁地址,當網頁請求方式為POST時,請求參數存放在data(類型為字典)里。
URL:https://cn.bing.com/ttranslate?&category=&IG=C4A52C35D175427988E6510779DEFB5F&IID=translator.5036.8
這裡我要說明一下,我在第一次找URL的時候找到的是這個:
https://cn.bing.com/ttranslate?&category=&IG=7E72C4A882064F48BAD8D7C06B7F22A9&IID=translator.5036.1
用這個URL也可以翻譯,但是只能翻譯單個單詞和詞語,在後面的代碼中如果翻譯了長句子就會報錯。所以提取參數的時候可以把翻譯內容多寫一點,找到能長句翻譯的URL。
data:{‘text’:'hello', 'from':'en', 'to':'zh-CHS'}這裡用字典形式寫出來,簡單解讀就是'text'是翻譯的內容,'from'是翻譯內容的語言,這裡的'en'就代表英語,'to'是翻譯結果的語言,'zh-CHS'代表簡體中文。這些之後要用到。
2.代碼構建
得到信息之後就可以開始寫代碼了,具體可以參考文章開頭的兩篇參考博文,這裡直接給出代碼:如果你看不懂的話,建議先去小編的Python交流.裙 :一久武其而而流一思(數字的諧音)轉換下可以找到了,裡面有最新Python教程項目可拿,多跟裡面的人交流,進步更快哦!
import requests url = 'https://cn.bing.com/ttranslate?&category=&IG=C4A52C35D175427988E6510779DEFB5F&IID=translator.5036.8' def translate_weiruan(info,fr='zh-CHS',to="en"): print('翻譯結果:'+requests.post(url,data={'text':info,'from':fr,'to':to,'doctype':'json'}).json()['translationResponse']) def is_Chinese(str): #判斷輸入的內容是否是中文 for ch in str: if '\u4e00' <= ch <= '\u9fff': return True else: return False def start_translate(): trans = input('翻譯內容:') if is_Chinese(trans): #實現自動判斷,中英互譯 translate_weiruan(trans) else: translate_weiruan(trans,fr='en',to='zh-CHS') if __name__ == '__main__': print(' 翻譯結果由微軟翻譯提供!(請確保網路已連接)') while True: start_translate() print('\n')
這裡用的requests模塊,可以用一句話實現我們的功能,具體參考文章開頭的第二篇博文。
再簡單解釋一下:
def translate_weiruan(info,fr='zh-CHS',to="en"): print('翻譯結果:'+requests.post(url,data={'text':info,'from':fr,'to':to,'doctype':'json'}).json()['translationResponse'])
這段代碼的功能就是用POST方式連接翻譯網站(url)並給它傳參數(data),返回一個 json 類型的信息,再用 json()方法對信息進行處理。返回的信息如下:
很簡單的字典類型:{"statusCode":200,"translationResponse":"你好"}
再用關鍵字"translationResponse"提取翻譯結果。
3.實戰結果
OK,也算是初步完成功能啦!當然裡面也還是有很多不足,還請各位大牛指點。如果你也正在學習,可以去如果你看不懂的話,建議先去小編的Python交流.裙 :一久武其而而流一思(數字的諧音)轉換下可以找到了,裡面有最新Python教程項目可拿,多跟裡面的人交流,進步更快哦!