使用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爬蟲/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 爬蟲隨筆
- 本筆記不允許任何個人和組織轉載