最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python爬蟲(chóng)學(xué)習(xí)之翻譯小程序

 更新時(shí)間:2019年07月30日 15:07:46   作者:羅思洋  
這篇文章主要為大家詳細(xì)介紹了Python爬蟲(chóng)學(xué)習(xí)之翻譯小程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本次博客分享的內(nèi)容為基于有道在線翻譯實(shí)現(xiàn)一個(gè)實(shí)時(shí)翻譯小程序,本次任務(wù)是參考小甲魚(yú)的書(shū)《零基礎(chǔ)入門(mén)學(xué)習(xí)Python》完成的,書(shū)中代碼對(duì)于當(dāng)前的有道詞典并不適用,使用后無(wú)法實(shí)現(xiàn)翻譯功能,在網(wǎng)上進(jìn)行學(xué)習(xí)之后解決了這一問(wèn)題。

2、前置工作

1)由于有道在線翻譯是“反爬蟲(chóng)”的,所以在編寫(xiě)該程序的時(shí)候需要使用到User-Agent,通過(guò)使用request模塊中的headers參數(shù),對(duì)它進(jìn)行適當(dāng)?shù)脑O(shè)置就可以將程序訪問(wèn)偽裝為瀏覽器訪問(wèn),有兩種方法可以添加headers參數(shù),我使用的方法是通過(guò)add_header()方法往Request對(duì)象中添加headers參數(shù);

2)我使用的是360瀏覽器,獲取它User-Agent的方法是在地址欄中輸入about:version即可,結(jié)果如下圖:

3)在獲得該參數(shù)后還需要獲取有道翻譯的data數(shù)據(jù),首先先打開(kāi)有道翻譯界面,然后打開(kāi)其審查元素,點(diǎn)擊netwoek,然后在翻譯框內(nèi)輸入word點(diǎn)擊翻譯,找到如下圖所示的位置:

4)一直往下滑動(dòng),就可以找到data參數(shù),在編程時(shí)的設(shè)置就需要按照這里來(lái)完成,如下圖:

其中在headers中需要設(shè)置的Referer及User-Agent也在上圖中可以找到。

3、任務(wù)代碼

在程序的編寫(xiě)中需要使用到許多python模塊,包括urllib、json 、time等等。

對(duì)于urllib在上一篇博客中已經(jīng)用到了,它的作用是一個(gè)高級(jí)的 web 交流庫(kù),其核心功能就是模仿web瀏覽器等客戶端,去請(qǐng)求相應(yīng)的資源,并返回一個(gè)類(lèi)文件對(duì)象。

json是一種輕量級(jí)的數(shù)據(jù)交換格式,易于人閱讀和編寫(xiě),我們需要使用json.loads 解碼 json數(shù)據(jù)。

time是用于獲取當(dāng)前時(shí)間戳并延遲提交數(shù)據(jù),延遲提交數(shù)據(jù)雖然會(huì)降低工作效率,但是也降低了ip被網(wǎng)頁(yè)拉黑的風(fēng)險(xiǎn)。

具體的代碼如下圖所示:

import urllib.request #導(dǎo)入urllib.request庫(kù)
import urllib.parse #導(dǎo)入urllib.parse庫(kù)
import json #導(dǎo)入json庫(kù)
import time #導(dǎo)入time庫(kù)
import random #導(dǎo)入random庫(kù)
import hashlib #導(dǎo)入hashlib庫(kù)
url = "http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule" #有道翻譯的網(wǎng)址
while True: #定義死循環(huán)
 fanyi = input("請(qǐng)輸入想要翻譯的內(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)前時(shí)間戳
 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)頁(yè)審查元素設(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)頁(yè),包含url、data和head
 #偽造瀏覽器訪問(wèn)
 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方式打開(kāi)指定網(wǎng)頁(yè)
 html = response.read()   #讀取網(wǎng)頁(yè)信息
 html = html.decode('utf - 8')  #將utf-8碼解碼為unicode碼
 target = json.loads(html)   #把json頁(yè)面轉(zhuǎn)換為一個(gè)字典
 print("翻譯結(jié)果: %s" % (target['translateResult'][0][0]['tgt'])) #輸出
 time.sleep(5) #延遲提交數(shù)據(jù)

運(yùn)行結(jié)果如下圖所示:

4、總結(jié)

書(shū)上的知識(shí)是否正確還需要自己敲一邊代碼才能進(jìn)行驗(yàn)證,所以說(shuō)動(dòng)手才是最重要的,本次制作這個(gè)翻譯小程序,由于書(shū)本知識(shí)的錯(cuò)誤,我通過(guò)網(wǎng)上查找資料才解決了這個(gè)問(wèn)題,從中也學(xué)到了許多知識(shí),希望自己能繼續(xù)加油,學(xué)到更多的知識(shí)。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • pymongo為mongodb數(shù)據(jù)庫(kù)添加索引的方法

    pymongo為mongodb數(shù)據(jù)庫(kù)添加索引的方法

    這篇文章主要介紹了pymongo為mongodb數(shù)據(jù)庫(kù)添加索引的方法,涉及Python操作mongodb數(shù)據(jù)庫(kù)的相關(guān)技巧,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下
    2015-05-05
  • Python局部函數(shù)及用法詳解(含nonlocal關(guān)鍵字)

    Python局部函數(shù)及用法詳解(含nonlocal關(guān)鍵字)

    局部函數(shù)有哪些特征,在使用時(shí)需要注意什么呢?接下來(lái)就給讀者詳細(xì)介紹?Python?局部函數(shù)的用法,對(duì)Python局部函數(shù)相關(guān)知識(shí)感興趣的朋友跟隨小編一起看看吧
    2022-12-12
  • Python之Class&Object用法詳解

    Python之Class&Object用法詳解

    今天小編就為大家分享一篇Python之Class&Object用法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-12-12
  • python實(shí)現(xiàn)逆濾波與維納濾波示例

    python實(shí)現(xiàn)逆濾波與維納濾波示例

    今天小編就為大家分享一篇python實(shí)現(xiàn)逆濾波與維納濾波示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-02-02
  • 通俗講解python 裝飾器

    通俗講解python 裝飾器

    這篇文章主要介紹了python 裝飾器的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)python裝飾器的相關(guān)知識(shí),感興趣的朋友可以了解下
    2020-09-09
  • python 處理微信對(duì)賬單數(shù)據(jù)的實(shí)例代碼

    python 處理微信對(duì)賬單數(shù)據(jù)的實(shí)例代碼

    本文通過(guò)實(shí)例代碼給大家介紹了python 處理微信對(duì)賬單數(shù)據(jù),代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-07-07
  • 舉例講解Python中的Null模式與橋接模式編程

    舉例講解Python中的Null模式與橋接模式編程

    這篇文章主要介紹了Python中的Null模式與橋接模式編程,Null模式與橋接模式都屬于Python的設(shè)計(jì)模式編程,需要的朋友可以參考下
    2016-02-02
  • Django權(quán)限控制的使用

    Django權(quán)限控制的使用

    這篇文章主要介紹了Django權(quán)限控制的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • python爬蟲(chóng)的工作原理

    python爬蟲(chóng)的工作原理

    本文主要介紹了python爬蟲(chóng)的工作原理,具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧
    2017-03-03
  • Python3二分查找?guī)旌瘮?shù)bisect(),bisect_left()和bisect_right()的區(qū)別

    Python3二分查找?guī)旌瘮?shù)bisect(),bisect_left()和bisect_right()的區(qū)別

    這篇文章主要介紹了Python3二分查找?guī)旌瘮?shù)bisect(),bisect_left()和bisect_right()的區(qū)別,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03

最新評(píng)論

余庆县| 尼木县| 武鸣县| 镇赉县| 永兴县| 甘泉县| 大化| 宁河县| 凤城市| 惠水县| 沙田区| 牟定县| 安顺市| 连江县| 桐庐县| 巴彦县| 航空| 郎溪县| 平舆县| 望奎县| 富锦市| 广宁县| 昌平区| 英山县| 介休市| 富源县| 铅山县| 昆明市| 崇阳县| 双桥区| 文山县| 青岛市| 高密市| 洪湖市| 石台县| 五家渠市| 甘肃省| 同心县| 贵定县| 嵊泗县| 凤台县|