您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關(guān)Python爬取翻譯小程序的示例分析的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
2、前置工作
1)由于有道在線翻譯是“反爬蟲”的,所以在編寫該程序的時候需要使用到User-Agent,通過使用request模塊中的headers參數(shù),對它進(jìn)行適當(dāng)?shù)脑O(shè)置就可以將程序訪問偽裝為瀏覽器訪問,有兩種方法可以添加headers參數(shù),我使用的方法是通過add_header()方法往Request對象中添加headers參數(shù);
2)我使用的是360瀏覽器,獲取它User-Agent的方法是在地址欄中輸入about:version即可,結(jié)果如下圖:
3)在獲得該參數(shù)后還需要獲取有道翻譯的data數(shù)據(jù),首先先打開有道翻譯界面,然后打開其審查元素,點擊netwoek,然后在翻譯框內(nèi)輸入word點擊翻譯,找到如下圖所示的位置:
4)一直往下滑動,就可以找到data參數(shù),在編程時的設(shè)置就需要按照這里來完成,如下圖:
其中在headers中需要設(shè)置的Referer及User-Agent也在上圖中可以找到。
3、任務(wù)代碼
在程序的編寫中需要使用到許多python模塊,包括urllib、json 、time等等。
對于urllib在上一篇博客中已經(jīng)用到了,它的作用是一個高級的 web 交流庫,其核心功能就是模仿web瀏覽器等客戶端,去請求相應(yīng)的資源,并返回一個類文件對象。
json是一種輕量級的數(shù)據(jù)交換格式,易于人閱讀和編寫,我們需要使用json.loads 解碼 json數(shù)據(jù)。
time是用于獲取當(dāng)前時間戳并延遲提交數(shù)據(jù),延遲提交數(shù)據(jù)雖然會降低工作效率,但是也降低了ip被網(wǎng)頁拉黑的風(fēng)險。
具體的代碼如下圖所示:
import urllib.request #導(dǎo)入urllib.request庫 import urllib.parse #導(dǎo)入urllib.parse庫 import json #導(dǎo)入json庫 import time #導(dǎo)入time庫 import random #導(dǎo)入random庫 import hashlib #導(dǎo)入hashlib庫 url = "http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule" #有道翻譯的網(wǎng)址 while True: #定義死循環(huán) fanyi = input("請輸入想要翻譯的內(nèi)容:") #用戶輸入想要翻譯的內(nèi)容 #設(shè)置API接口 a = 'fanyideskweb' #設(shè)置client b = fanyi #需要翻譯的內(nèi)容 c = str(int(time.time() * 1000)+ random.randint(1, 10)) #當(dāng)前時間戳 d = 'rY0D^0\'nM0}g5Mm1z%1G4' #加密字符 sign = hashlib.md5((a +b +c + d).encode('utf - 8')).hexdigest() #根據(jù)內(nèi)容進(jìn)行md5加密 #設(shè)置data,按照網(wǎng)頁審查元素設(shè)置即可 data = {} data['i'] = fanyi data['from'] = 'AUTO' data['to'] = 'AUTO' data['smartresult'] = 'dict' data['client'] = 'fanyideskweb' data['salt'] = c data['sign'] = sign data['doctype'] = 'json' data['version'] = '2.1' data['keyform'] = 'fanyi.web' data['action'] = 'FY_BY_CLICKBUTTION' data['typoResult'] = 'true' data = urllib.parse.urlencode(data).encode('utf - 8') #urlencode轉(zhuǎn)換data數(shù)據(jù)并編碼為utf-8碼 req = urllib.request.Request(url, data) #指定網(wǎng)頁,包含url、data和head #偽造瀏覽器訪問 req.add_header('Referer','http://fanyi.youdao.com') req.add_header('User - Agent','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36 QIHU 360SE') response = urllib.request.urlopen(req) #post方式打開指定網(wǎng)頁 html = response.read() #讀取網(wǎng)頁信息 html = html.decode('utf - 8') #將utf-8碼解碼為unicode碼 target = json.loads(html) #把json頁面轉(zhuǎn)換為一個字典 print("翻譯結(jié)果: %s" % (target['translateResult'][0][0]['tgt'])) #輸出 time.sleep(5) #延遲提交數(shù)據(jù)
運行結(jié)果如下圖所示:
感謝各位的閱讀!關(guān)于“Python爬取翻譯小程序的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。