使用python爬蟲實現百度翻譯功能
python爬蟲實現百度翻譯: python直譯器【模擬瀏覽器】,傳送【post請求】,傳入待【翻譯的內容】作為引數,獲取【百度翻譯的結果】
通過開發者工具,獲取傳送請求的地址
提示: 翻譯內容傳送的請求地址,絕對不是開啟百度翻譯的那個地址,想要抓取地址,就要藉助【瀏覽器的開發者工具】,或者其他抓包工具
下面介紹獲取請求地址的具體方法
以Chrome為例
- 開啟百度翻譯:http://fanyi.baidu.com/
- 【點選右鍵】>【檢查】>【network】(如果是火狐瀏覽器,點選【網路】)
- 點選【XHR】項,(有些需要重新整理,有些非同步的請求不需要重新整理)
- 在頁面【輸入翻譯的詞彙】
- 在XHR項下,查詢包含【輸入需要翻譯的詞彙】的請求
檢視請求的引數,需要【點選請求】>【Headers】>最下面的【Form Data】
(這裡有一個坑:我們會發現有多個sug項,其實是因為百度翻譯只要每輸入一個字母就會傳送一次請求,所以雖然多個請求的地址都是一樣的,但是隻有最後一個sug項的引數才是最後的詞彙)操作截圖
請求地址在這裡
獻上實現的程式碼
直接上程式碼,具體步驟下載註釋上了
- 不會配置環境,安裝python的包,請參考上一篇:
https://blog.csdn.net/qq_40147863/article/details/81451202 - py05bdfanyi.py檔案:https://xpwi.github.io/py/py%E7%88%AC%E8%99%AB/py05bdfanyi.py
# python爬蟲實現百度翻譯
# urllib和request POST引數提交
# 缺少包請自行檢視之前的筆記
from urllib import request,parse
import json
def fanyi(keyword):
base_url = 'http://fanyi.baidu.com/sug'
# 構建請求物件
data = {
'kw': keyword
}
data = parse.urlencode(data)
# 模擬瀏覽器
header = {"User-Agent": "mozilla/4.0 (compatible; MSIE 5.5; Windows NT)"}
req = request.Request(url=base_url,data=bytes(data,encoding='utf-8'),headers=header)
res = request.urlopen(req)
# 獲取響應的json字串
str_json = res.read().decode('utf-8')
# 把json轉換成字典
myjson = json.loads(str_json)
info = myjson['data'][0]['v']
print(info)
if __name__=='__main__':
while True:
keyword = input('請輸入翻譯的單詞:')
if keyword == 'q':
break
fanyi(keyword)
程式碼執行
後續還會更精彩
python爬蟲實現百度翻譯: python直譯器【模擬瀏覽器】,傳送【post請求】,傳入待【翻譯的內容】作為引數,獲取【百度翻譯的結果】
更多文章連結:Python 爬蟲隨筆
- 本筆記不允許任何個人和組織轉載