python爬蟲(chóng)之爬取百度翻譯
破解百度翻譯
翻譯是一件麻煩的事情,如果可以寫(xiě)一個(gè)爬蟲(chóng)程序直接爬取百度翻譯的翻譯結(jié)果就好了,可當(dāng)我打開(kāi)百度翻譯的頁(yè)面,輸入要翻譯的詞時(shí)突然發(fā)現(xiàn)不管我要翻譯什么,網(wǎng)址都沒(méi)有任何變化,那么百度翻譯要怎么爬取呢?
爬取百度翻譯之前,我們先要明白百度翻譯是怎么在不改變網(wǎng)址的情況下實(shí)現(xiàn)翻譯的。百度做到這一點(diǎn)是用 AJAX 實(shí)現(xiàn)的,簡(jiǎn)單地說(shuō),AJAX的作用是在不重新加載網(wǎng)頁(yè)的情況下進(jìn)行局部的刷新。
了解了這一點(diǎn),那么我們要怎么得到 AJAX 工作時(shí)請(qǐng)求的URL呢?老規(guī)矩,使用抓包工具。
爬蟲(chóng)步驟
在 “百度翻譯” 頁(yè)面右鍵,選擇“Notework”選擇 “ XHR ”
如果畫(huà)面沒(méi)有任何數(shù)據(jù),可以試著輸入要翻譯的詞,比如說(shuō)我輸入“dog”時(shí),就發(fā)生了如下的變化
我們看到此時(shí)的 kw 是我要翻譯的詞,說(shuō)明這是我們要找的東西。
(注意:我們發(fā)現(xiàn)其中有三個(gè) sug ,我選的只是其中一個(gè)。如果我們?nèi)紟c(diǎn)開(kāi)看,就會(huì)發(fā)現(xiàn),他們的 kw 分別是:d 和 do。這是因?yàn)槲掖?dog 時(shí)一個(gè)單詞一個(gè)單詞打的,而 AJAX 是時(shí)時(shí)刷新。如果輸入中文就不會(huì)出現(xiàn)這種情況。翻譯中文時(shí),我們找的也不是 sug 了,具體是什么,就看哪個(gè)包的 data 的值是我們要翻譯的詞。)
然后我們?cè)诨氐缴厦妫业轿覀冃枰付ǖ?URL 、我們要選擇的請(qǐng)求命令以及爬取到的數(shù)據(jù)的類(lèi)型。
歐克,做到這里我們的前期準(zhǔn)備就完成了,下面就可以開(kāi)始著手寫(xiě)代碼了。
import requests if __name__ == "__main__": # 指定 url url = "https://fanyi.baidu.com/sug" # 要翻譯的詞 keyword = input("需要翻譯的詞:") data = { "kw": keyword } # UA 偽裝 header = { "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36" } # 發(fā)送請(qǐng)求 response = requests.post(url = url, data = data, headers = header).json() print(response)
我們運(yùn)行程序發(fā)現(xiàn)結(jié)果是這樣的:
因?yàn)檎?qǐng)求到的數(shù)據(jù)比較短,所以我們比較容易地看出數(shù)據(jù)的結(jié)構(gòu)是字典里有列表,列表里又有字典結(jié)構(gòu)。如果比較長(zhǎng),我們可以使用在線 json 轉(zhuǎn)換,轉(zhuǎn)換后的數(shù)據(jù)是這樣的
我們只需要 dog 的釋義,所以我們還可以對(duì)我們代碼進(jìn)行優(yōu)化
print(response["data"][0]["v"])
注意
關(guān)于 data 的字典,并不是說(shuō)只需要 “ kw ”: dog, data 的字典里要存儲(chǔ)的是抓包工具里 from data 里所有的值,如果沒(méi)有值,那么相對(duì)應(yīng)的值就是空字符串。
如果學(xué)會(huì)了,你試著自己寫(xiě)一個(gè)破解有道翻譯的爬蟲(chóng)程序吧!
到此這篇關(guān)于python爬蟲(chóng)之爬取百度翻譯的文章就介紹到這了,更多相關(guān)python爬取百度翻譯內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python實(shí)現(xiàn)自動(dòng)打開(kāi)電腦應(yīng)用的示例代碼
這篇文章主要介紹了Python實(shí)現(xiàn)自動(dòng)打開(kāi)電腦應(yīng)用的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04tensorflow實(shí)現(xiàn)打印ckpt模型保存下的變量名稱(chēng)及變量值
今天小編就為大家分享一篇tensorflow實(shí)現(xiàn)打印ckpt模型保存下的變量名稱(chēng)及變量值,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-01-01pycharm快捷鍵自動(dòng)提示documentation問(wèn)題(auto?Ctrl+Q)
這篇文章主要介紹了pycharm快捷鍵自動(dòng)提示documentation問(wèn)題(auto?Ctrl+Q),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-04-04pyenv與virtualenv安裝實(shí)現(xiàn)python多版本多項(xiàng)目管理
這篇文章主要介紹了pyenv與virtualenv安裝實(shí)現(xiàn)python多版本多項(xiàng)目管理過(guò)程,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-08-08使用python切片實(shí)現(xiàn)二維數(shù)組復(fù)制示例
今天小編就為大家分享一篇使用python切片實(shí)現(xiàn)二維數(shù)組復(fù)制示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-11-11Python簡(jiǎn)易版圖書(shū)管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了Python如何實(shí)現(xiàn)簡(jiǎn)易版圖書(shū)管理系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-08-08如何用六步教會(huì)你使用python爬蟲(chóng)爬取數(shù)據(jù)
網(wǎng)絡(luò)爬蟲(chóng)就是按照一定規(guī)則自動(dòng)訪問(wèn)互聯(lián)網(wǎng)上的信息并把內(nèi)容下載下來(lái)的程序或腳本,下面這篇文章主要給大家介紹了關(guān)于如何用六步教會(huì)你使用python爬蟲(chóng)爬取數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下2022-04-04Python學(xué)習(xí)筆記之抓取某只基金歷史凈值數(shù)據(jù)實(shí)戰(zhàn)案例
這篇文章主要介紹了Python學(xué)習(xí)筆記之抓取某只基金歷史凈值數(shù)據(jù)案例,結(jié)合具體實(shí)例形式分析了Python基于selenium庫(kù)的數(shù)據(jù)抓取及mysql交互相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2019-06-06