Python爬蟲教程-05-python爬蟲實現百度翻譯

肖朋偉發表於2018-09-06

使用python爬蟲實現百度翻譯功能

python爬蟲實現百度翻譯: python直譯器【模擬瀏覽器】,傳送【post請求】,傳入待【翻譯的內容】作為引數,獲取【百度翻譯的結果】

通過開發者工具,獲取傳送請求的地址

提示: 翻譯內容傳送的請求地址,絕對不是開啟百度翻譯的那個地址,想要抓取地址,就要藉助【瀏覽器的開發者工具】,或者其他抓包工具

下面介紹獲取請求地址的具體方法

以Chrome為例

  • 開啟百度翻譯:http://fanyi.baidu.com/
  • 【點選右鍵】>【檢查】>【network】(如果是火狐瀏覽器,點選【網路】)
  • 點選【XHR】項,(有些需要重新整理,有些非同步的請求不需要重新整理)
  • 在頁面【輸入翻譯的詞彙】
  • 在XHR項下,查詢包含【輸入需要翻譯的詞彙】的請求
  • 檢視請求的引數,需要【點選請求】>【Headers】>最下面的【Form Data】
    (這裡有一個坑:我們會發現有多個sug項,其實是因為百度翻譯只要每輸入一個字母就會傳送一次請求,所以雖然多個請求的地址都是一樣的,但是隻有最後一個sug項的引數才是最後的詞彙)

    操作截圖

    這裡寫圖片描述

    請求地址在這裡

    這裡寫圖片描述

獻上實現的程式碼

直接上程式碼,具體步驟下載註釋上了

# 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 爬蟲隨筆


  • 本筆記不允許任何個人和組織轉載

相關文章