這篇文章主要為大家展示了“如何利用python爬蟲(chóng)調(diào)用百度翻譯”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“如何利用python爬蟲(chóng)調(diào)用百度翻譯”這篇文章吧。
公司主營(yíng)業(yè)務(wù):網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、移動(dòng)網(wǎng)站開(kāi)發(fā)等業(yè)務(wù)。幫助企業(yè)客戶(hù)真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)建站是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開(kāi)放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶(hù)帶來(lái)驚喜。創(chuàng)新互聯(lián)建站推出西盟免費(fèi)做網(wǎng)站回饋大家。
首先我們打開(kāi)百度翻譯:
然后按F12,打開(kāi)調(diào)試,然后點(diǎn)擊network
經(jīng)過(guò)我們的分析,我們可以分析到百度翻譯的真實(shí)post提交頁(yè)面是Request URL:https://fanyi.baidu.com/sug 并且我們可以發(fā)現(xiàn)form data 里面有一個(gè)鍵值對(duì)kw:day
經(jīng)過(guò)初步分析,我們應(yīng)該有個(gè)大概的思路了,無(wú)非就是通過(guò)這個(gè)網(wǎng)址,我們post提交一些數(shù)據(jù)給他,然后他會(huì)返回一個(gè)值給我們(其實(shí)到后面我們知道這個(gè)數(shù)據(jù)它是通過(guò)json格式返回給我們的)
1.首先我們都要導(dǎo)入我們需要的庫(kù)以及定義一下我們的網(wǎng)址和要翻譯的單詞(這里我們是用戶(hù)輸入)
from urllib import request, parse
import json
baseurl = "https://fanyi.baidu.com/sug"
word = input("請(qǐng)輸入您想輸入的單詞:")
2.因?yàn)槲覀兺ㄟ^(guò)上面的分析,知道了我們傳給它的值(也就是我們要翻譯的單詞)是通過(guò)鍵值對(duì)的形式來(lái)傳遞的,所以我們就可以使用python里面的字典格式進(jìn)行定義
# 我們需要傳送過(guò)去的數(shù)據(jù)
datas = {
'kw': word
}
3.然后我們會(huì)通過(guò)parse來(lái)對(duì)這個(gè)datas進(jìn)行編碼,因?yàn)榇藭r(shí)的字典類(lèi)型是字符串類(lèi)型,我們傳送過(guò)去的應(yīng)該是一個(gè)bytes類(lèi)型,如果不進(jìn)行編碼,后面會(huì)報(bào)錯(cuò)滴!
# 對(duì)數(shù)據(jù)進(jìn)行編碼
data = parse.urlencode(datas).encode()
4.其次,我們要寫(xiě)出訪問(wèn)百度翻譯網(wǎng)站的headers,這個(gè)headers可以模擬瀏覽器進(jìn)行訪問(wèn),當(dāng)然我們這種訪問(wèn)只需要寫(xiě)出我們傳輸?shù)闹档瞄L(zhǎng)度就夠了,其他的參數(shù)沒(méi)有必要去寫(xiě)。
# 寫(xiě)http頭部,至少需要Content-Length
headers = {
# 此處為編碼后的長(zhǎng)度
'Content-Length': len(data),
}
5.我們把要傳輸?shù)臄?shù)據(jù)(單詞)和訪問(wèn)該網(wǎng)站的headers寫(xiě)好了之后,就進(jìn)行最關(guān)鍵的一步,就是把我們寫(xiě)好的這些東西傳輸?shù)桨俣确g的網(wǎng)站上
# 將數(shù)據(jù)傳送
req = request.Request(url=baseurl, data=data, headers=headers)
res = request.urlopen(req)
我們首先使用request里面的Request對(duì)象將 url網(wǎng)址,data數(shù)據(jù), headers頭文件傳入到req對(duì)象。然后再將req這個(gè)對(duì)象寫(xiě)入request的urlopen。
6. 此時(shí),post數(shù)據(jù)部分我們已經(jīng)完成了,res就是返回給我們的數(shù)據(jù)對(duì)象。我們?cè)偻ㄟ^(guò)read方法,把這個(gè)返回的數(shù)據(jù)對(duì)象讀取出來(lái),然后通過(guò)decode方法進(jìn)行編碼(此時(shí)編碼后就成了一個(gè)json格式的數(shù)據(jù)),最后我們將它進(jìn)行json格式解析。
json_data = res.read()
json_data = json_data.decode()
json_data = json.loads(json_data)
我們打印一下json_data
7.最后一步就是將我們用戶(hù)想看到的東西提取出來(lái),我們分析這個(gè)json里面的data所對(duì)應(yīng)的值是一個(gè)list對(duì)象,所以我們提取data的值之后就可以像list一樣去處理數(shù)據(jù)了!
data_list = json_data.get('data')
for item in data_list:
print(item['k'], '---', item['v'])
最后結(jié)果:
'''
利用爬蟲(chóng)調(diào)用百度翻譯----power:IT資源君
'''
from urllib import request, parse
import json
if __name__ == '__main__':
baseurl = "https://fanyi.baidu.com/sug"
word = input("請(qǐng)輸入您想輸入的單詞:")
# 我們需要傳送過(guò)去的數(shù)據(jù)
datas = {
'kw': word
}
# 對(duì)數(shù)據(jù)進(jìn)行編碼
data = parse.urlencode(datas).encode()
# 寫(xiě)http頭部,至少需要Content-Length
headers = {
# 此處為編碼后的長(zhǎng)度
'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里面是一個(gè)list
data_list = json_data.get('data')
for item in data_list:
print(item['k'], '---', item['v'])
以上是“如何利用python爬蟲(chóng)調(diào)用百度翻譯”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!