python英语词汇读音_利用Python制作查单词小程序(一):抓取来自百度翻译的单词释义和音标...
小編在學習英語的時候,遇到不認識的英語單詞,會用百度翻譯來查詢單詞的釋義和音標,并播放單詞的讀音。為了便于復習和記憶,需要將單詞的釋義和音標以復制粘貼的方式保存到本地。
這個過程非常繁瑣,于是小編就想能否利用Python寫一個爬蟲小程序,來自動完成這些工作呢?
為了完成這樣一個小程序,我們需要完成以下幾個步驟:
1.輸入單詞,查詢單詞的釋義和音標
2.下載音頻并播放讀音
3.保存到本地Excel文件中,并自動調整格式
4.打包成可執行的exe程序
在本篇文章中,我們將講解如何完成第一個步驟:輸入單詞,查詢單詞的釋義和音標。
1
打開百度翻譯,確定需要抓取的信息
打開以后,我們輸入單詞“Python”,點擊網頁中的“翻譯”按鈕進行查詢,出現如下圖所示內容。用紅框框出的單詞釋義和音標,是我們需要抓取的信息。
同時,我們想要單詞的釋義和音標在Excel中以下圖所示的結構保存。
2
利用開發者工具(DevTools)進行抓包分析
以Chrome瀏覽器為例,我們可以通過以下方式打開開發者工具:
1. 在網頁空白處點擊右鍵,然后左鍵點擊“檢查”
2. Ctrl + Shift + I
3. F12
打開以后,點擊“Network”選項,如下圖所示:
根據提示,我們按“F5”刷新網頁,網頁重新加載,在“Network”面板中,可以看到從服務器發送過來的數據,包括HTML文件、JS文件、圖片等。
我們點擊“logo_cbfea26.png”,再點擊“Preview”,會出現百度翻譯的圖片,也就是網頁左上角的Logo。
這些從百度翻譯所在服務器傳遞過來的數據和文件經過瀏覽器處理和渲染,最終呈現出我們在瀏覽器里看到的網頁界面。
3
找到目標URL,發送請求
我們的目標是找到從服務器傳遞過來包含單詞釋義和音標內容的URL地址,然后利用Python去請求該URL地址,得到目標內容。
有些時候,從瀏覽器傳輸過來的數據太多太雜,我們無法快速找到目標內容。這是一個熟能生巧的過程,嘗試次數多了,自然能夠快速定位目標URL。
這里介紹小編常用的一個方法:
1. 點擊開發者工具左上方的清理按鈕,將原先所有的數據刪除,然后點擊網頁中的“翻譯”按鈕,網頁內容局部加載,在“Network”中會出現新傳遞過來的數據。
2. 傳輸過來的數據有多種類型,我們可以利用開發者工具中自帶的篩選功能。一般目標內容在“XHR”或者“Doc”中,我們先點擊“XHR”選項。具體操作如下圖所示。
3. 我們點擊“v2transapi”,然后點擊“Preview”選項,可以看到具體的內容。我們依次點擊:“direct_result” – “simple_means” – “symbols” – “0” – “parts” – “0” – “means”,這樣我們就看到了單詞釋義以及音標。
5. 在“Request Headers”中會出現請求頭信息,我們在請求網址的時候一定要帶上這些信息,不然不會返回目標內容。
6. 在“Form Data”這一欄中,可以看到有一行是“query : Python”,說明我們要查詢的單詞是“Python”。所以我們要查詢不同的單詞只需要在這行更改就行了。
7. 代碼如下(由于篇幅所限,省去一些不重要的代碼,我們會附上完整代碼):
4
加載JS代碼得到sign
我們最終實現的目標是能夠查詢不同的單詞。我們在查詢其他單詞時發現,sign會隨著所查詢單詞的變化而變化。以查詢“Python”和“python”為例,我們發現sign分別為“587387.791882”和“477811.239938”。
每一個單詞都會對應一個sign,它是根據單詞本身用JS代碼生成的。這是一個反爬蟲手段,如果沒有sign,會有很多爬蟲輕而易舉地去抓取這些信息。我們需要從網頁加載的JS代碼中找出生成sign的那一段代碼,這又是一個復雜而又困難的工作。好在網上已經有熱心的網友將這段JS代碼找到了,我們直接照搬下來就行。
我們用一個專門執行JS代碼的模塊“execjs”來生成sign,代碼如下:
將兩段代碼合并,然后發送請求,得到如下數據。這是一段字符串,這其實是JSON格式的數據,我們可以用Python自帶的模塊“json”來進行處理。
5
處理JSON格式的數據
這里直接貼代碼,代碼如下。
打開“infos”這個列表,我們可以看到Python已經成功處理了那段字符串,并以“list”的形式存儲單詞釋義和音標。
至此,我們利用Python成功完成了第一個步驟:輸入單詞,查詢單詞的釋義和音標。
歡迎大家踴躍投稿,內容有關人文社會科學的即可,可以是學術前沿思想介紹、各種定量研究技術和方法介紹、各種軟件(stata、Python、R語言,數據可視化等等)數據處理及分析技巧,可以是網絡爬蟲技巧,也可以是學術論文寫作與發表等相關內容。
投稿要求:
1、務必原創、禁止抄襲;
2、務必準確、詳細,有例子,有數據,有截圖;
注意事項:
1、所有投稿都會經過本公眾號運營團隊成員的審核,審核通過才可錄用,一經錄用,我們會在推文里注明作者署名,并有稿酬提供;
2、郵件請注明投稿,郵件名為“投稿+推文名稱+作者+聯系方式”;
以人文之情懷
以學術為志業
···········
總結
以上是生活随笔為你收集整理的python英语词汇读音_利用Python制作查单词小程序(一):抓取来自百度翻译的单词释义和音标...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安装ecshop php,PHPstud
- 下一篇: git合并某个或某些提交到其他分支