教你用Python抓取百度翻譯


  最近一直在一個平台學習Python,所以分享下課程里面抓取百度翻譯的操作。原理其實也很簡單,就是將瀏覽器請求的操作我們用python進行模擬,從而獲取到返回的數據,我們將返回的數據進行提取,從而得到我們想要的內容。

 

一、安裝requests模塊

  1.當然如果安裝過了就可以跳過這一步了。如果沒有安裝過可以通過命令行輸入 pip install requests 進行安裝。如果你是用的pycharm,那么需要在當前工程下的venv里面安裝,因為我一開始直接打開命令行輸入的命令,安裝成功但是程序導入包的時候還是提示找不到這個模塊,后面在工程下的venv目錄下安裝就好了。

       2.當然也可以通過pycharm自帶的安裝模塊進行安裝。點擊File->settings 找到如下圖的位置,輸入你需要安裝的模塊名稱,然后點擊Install Package即可。當然推薦這種方式安裝了。

 

 二、進行百度翻譯數據請求的收集

  1.首先我們進入百度的翻譯頁面,網址 http://fanyi.baidu.com/translate。這里我們需要點開開發者模式(像搜狗瀏覽器快捷鍵就是F12),將瀏覽器切換成手機模式(最上面圈起來的那個小圖標點擊一下就是手機模式,其他瀏覽器圖標也差不多)。因為PC端的web在post提交數據的時候會有2個我們不好獲取的參數(其中一個是token),但是手機版的沒有這2個參數,所以我們選擇手機版進行所需要的數據收集。

  2.我們輸入一個查詢的內容,點擊翻譯按鈕。這個時候我們可以看到Network下會有很多文件,我們找到如圖下的這個文件,會發現我們想要的一些信息都在這個里面了。

  request URL:請求的地址

  request method:請求的方式,一般常見的也就Post和Get

  user-agent:用戶代理,你會發現pc和手機請求的時候這個里面的值是不一樣的。而且如果你不設置的話,里面會有一個python的默認值。這個值可能會影響網站給你返回的數據。

  form data:就是我們提交的表單數據了。而參數的zh表示中文,en表示英文,這個可以多獲取幾個語言的參數,然后自行選擇從哪個語言翻譯成哪個語言即可。

 

  

  3.我們點擊response可以看到返回的數據,我們想要的數據就在這個里面了。

  格式化后我們最后可以發現data下的st_tag里面就是我們想要的數據了,到時候直接解析出來這個內容即可。

 

 三、附上Python源碼

import requests #導入需要的包
import json

search = input("請輸入你要翻譯的內容:")

url = "http://fanyi.baidu.com/extendtrans" #請求的地址
headers={"User-Agent":"Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.76 Mobile Safari/537.36"} #設置請求的頭部

#設置提交的數據
posData={"query":search,
                "from":"en",
                "to":"zh"}

response = requests.post(url=url,data=posData,headers=headers)#模擬請求

#獲取response的數據有2種方式 一種是text獲取的直接是文本格式 但是可能有亂碼 需要手動設置response.encoding("編碼") 解決亂碼
#還有一種就是response.content 里面存的是網站直接返回的數據 二進制格式 然后通過decode解碼即可
#因為返回的是json對象,所以我們將最后解碼后的字符串進行json格式轉換 使用json.loads()進行轉換
json_data=json.loads(response.content.decode())

#然后我們可以通過格式化工具進行json的解析
print("單詞:{0} 翻譯:{1}".format(search,json_data["data"]["st_tag"]))

  運行效果

 

  不到10行代碼就可以搞定,現在想了想如果用java實現的話恐怕幾十行吧,大家也來試試吧^_^


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM