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

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

python爬蟲實現百度翻譯: python解釋器【模擬瀏覽器】,發送【post請求】,傳入待【翻譯的內容】做爲參數,獲取【百度翻譯的結果】python

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

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

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

以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請求】,傳入待【翻譯的內容】做爲參數,獲取【百度翻譯的結果】github

更多文章連接:Python 爬蟲隨筆

<hr>- 本筆記不容許任何我的和組織轉載json

相關文章
相關標籤/搜索