溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何利用python爬蟲調(diào)用百度翻譯

發(fā)布時間:2021-12-02 17:23:15 來源:億速云 閱讀:381 作者:小新 欄目:大數(shù)據(jù)

這篇文章主要為大家展示了“如何利用python爬蟲調(diào)用百度翻譯”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“如何利用python爬蟲調(diào)用百度翻譯”這篇文章吧。

1.百度翻譯網(wǎng)頁分析

首先我們打開百度翻譯:

如何利用python爬蟲調(diào)用百度翻譯

然后按F12,打開調(diào)試,然后點擊network


如何利用python爬蟲調(diào)用百度翻譯

經(jīng)過我們的分析,我們可以分析到百度翻譯的真實post提交頁面是Request URL:https://fanyi.baidu.com/sug  并且我們可以發(fā)現(xiàn)form data 里面有一個鍵值對kw:day


如何利用python爬蟲調(diào)用百度翻譯


經(jīng)過初步分析,我們應(yīng)該有個大概的思路了,無非就是通過這個網(wǎng)址,我們post提交一些數(shù)據(jù)給他,然后他會返回一個值給我們(其實到后面我們知道這個數(shù)據(jù)它是通過json格式返回給我們的)



2.開始寫代碼

1.首先我們都要導(dǎo)入我們需要的庫以及定義一下我們的網(wǎng)址和要翻譯的單詞(這里我們是用戶輸入)


from urllib import request, parse
import json

   baseurl = "https://fanyi.baidu.com/sug"
   word = input("請輸入您想輸入的單詞:")
 


2.因為我們通過上面的分析,知道了我們傳給它的值(也就是我們要翻譯的單詞)是通過鍵值對的形式來傳遞的,所以我們就可以使用python里面的字典格式進行定義


# 我們需要傳送過去的數(shù)據(jù)
   datas = {
       'kw': word
   }
 



3.然后我們會通過parse來對這個datas進行編碼,因為此時的字典類型是字符串類型,我們傳送過去的應(yīng)該是一個bytes類型,如果不進行編碼,后面會報錯滴!


# 對數(shù)據(jù)進行編碼

   data = parse.urlencode(datas).encode()
 



4.其次,我們要寫出訪問百度翻譯網(wǎng)站的headers,這個headers可以模擬瀏覽器進行訪問,當然我們這種訪問只需要寫出我們傳輸?shù)闹档瞄L度就夠了,其他的參數(shù)沒有必要去寫。


# 寫http頭部,至少需要Content-Length
   headers = {
       # 此處為編碼后的長度
       'Content-Length': len(data),
   }
 
 



5.我們把要傳輸?shù)臄?shù)據(jù)(單詞)和訪問該網(wǎng)站的headers寫好了之后,就進行最關(guān)鍵的一步,就是把我們寫好的這些東西傳輸?shù)桨俣确g的網(wǎng)站上

 

# 將數(shù)據(jù)傳送
   req = request.Request(url=baseurl, data=data, headers=headers)
   res = request.urlopen(req)
 



      我們首先使用request里面的Request對象將 url網(wǎng)址,data數(shù)據(jù), headers頭文件傳入到req對象。然后再將req這個對象寫入request的urlopen。


   6.  此時,post數(shù)據(jù)部分我們已經(jīng)完成了,res就是返回給我們的數(shù)據(jù)對象。我們再通過read方法,把這個返回的數(shù)據(jù)對象讀取出來,然后通過decode方法進行編碼(此時編碼后就成了一個json格式的數(shù)據(jù)),最后我們將它進行json格式解析。


json_data = res.read()

json_data = json_data.decode()

json_data = json.loads(json_data)
 



我們打印一下json_data

如何利用python爬蟲調(diào)用百度翻譯


7.最后一步就是將我們用戶想看到的東西提取出來,我們分析這個json里面的data所對應(yīng)的值是一個list對象,所以我們提取data的值之后就可以像list一樣去處理數(shù)據(jù)了!


data_list = json_data.get('data')
   for item in data_list:
       print(item['k'], '---', item['v'])
 



最后結(jié)果:

如何利用python爬蟲調(diào)用百度翻譯


完整代碼



'''
利用爬蟲調(diào)用百度翻譯----power:IT資源君
'''
from urllib import request, parse
import json

if __name__ == '__main__':
   baseurl = "https://fanyi.baidu.com/sug"
   word = input("請輸入您想輸入的單詞:")
   # 我們需要傳送過去的數(shù)據(jù)
   datas = {
       'kw': word
   }
   # 對數(shù)據(jù)進行編碼
   data = parse.urlencode(datas).encode()
   # 寫http頭部,至少需要Content-Length
   headers = {
       # 此處為編碼后的長度
       'Content-Length': len(data),
   }
   # 將數(shù)據(jù)傳送
   req = request.Request(url=baseurl, data=data, headers=headers)
   res = request.urlopen(req)

   json_data = res.read()
   json_data = json_data.decode()
   json_data = json.loads(json_data)
   # data里面是一個list
   data_list = json_data.get('data')
   for item in data_list:
       print(item['k'], '---', item['v'])

以上是“如何利用python爬蟲調(diào)用百度翻譯”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI