日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

爬虫入门-爬取有道在线翻译结果(2)

發(fā)布時(shí)間:2024/3/12 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 爬虫入门-爬取有道在线翻译结果(2) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

由于服務(wù)器會(huì)識(shí)別訪問(wèn)的對(duì)象是否為代碼并加以限制,所以需要加上一定的措施隱藏代碼身份。以上節(jié)有道為例:

1、添加headers信息:

在生成request對(duì)象時(shí)添加headers信息中的User-Agent屬性信息,模仿網(wǎng)頁(yè)端用戶(hù)。

注意有兩種方法,header信息要么在request對(duì)象生成前給出,要么在生成之后用add_header()函數(shù)添加上去

import urllib.request import urllib.parsecontent=input('請(qǐng)輸入需要翻譯的內(nèi)容:') url='http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule' header={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36'} data={'i': content, 'from': 'AUTO', 'to': 'AUTO', 'smartresult': 'dict', 'client': 'fanyideskweb', 'salt': '1522597233542', 'sign': '520f9eb5cefff7d528e25e43a47bc2e7', 'doctype': 'json', 'version': '2.1', 'keyfrom': 'fanyi.web', 'action': 'FY_BY_CLICKBUTTION', 'typoResult': 'false' } data=urllib.parse.urlencode(data).encode('utf-8')#python本身字符串是unicode,需要轉(zhuǎn)換為網(wǎng)頁(yè)默認(rèn)的utf-8 req=urllib.request.Request(url,data,header)#使用給定header信息,增強(qiáng)隱藏效果(欺騙服務(wù)器為個(gè)人用戶(hù)) ''' req.add_header('User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36') header信息要么在request對(duì)象生成前給出,要么在生成之后用add_header()函數(shù)添加上去 ''' response=urllib.request.urlopen(req) html=response.read().decode('utf-8')#實(shí)際上是個(gè)json結(jié)構(gòu),網(wǎng)頁(yè)本身是utf-8,需要轉(zhuǎn)換為python的unicode#json的運(yùn)用:輕量級(jí)數(shù)據(jù)交換 import json target=json.loads(html)#轉(zhuǎn)換成字典格式 print('翻譯結(jié)果:%s' % target['translateResult'][0][0]['tgt'])

但往往當(dāng)訪問(wèn)頻率過(guò)高時(shí),服務(wù)器就不再關(guān)注header信息,而有可能直接要求輸入驗(yàn)證碼,防止非個(gè)人用戶(hù)訪問(wèn),這里有以下兩種應(yīng)對(duì)辦法:

2.增加延遲:

人工強(qiáng)行降低訪問(wèn)頻次,使用time.sleep()函數(shù),簡(jiǎn)單但是效率低

import urllib.request import urllib.parsewhile True:content=input('請(qǐng)輸入需要翻譯的內(nèi)容(輸入字母q退出程序):')if content=='q':breakurl='http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'header={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36'}data={'i': content,'from': 'AUTO','to': 'AUTO','smartresult': 'dict','client': 'fanyideskweb','salt': '1522597233542','sign': '520f9eb5cefff7d528e25e43a47bc2e7','doctype': 'json','version': '2.1','keyfrom': 'fanyi.web','action': 'FY_BY_CLICKBUTTION','typoResult': 'false'}data=urllib.parse.urlencode(data).encode('utf-8')#python本身字符串是unicode,需要轉(zhuǎn)換為網(wǎng)頁(yè)默認(rèn)的utf-8req=urllib.request.Request(url,data,header)#使用給定header信息,增強(qiáng)隱藏效果(欺騙服務(wù)器為個(gè)人用戶(hù))'''req.add_header('User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36')header信息要么在request對(duì)象生成前給出,要么在生成之后用add_header()函數(shù)添加上去'''response=urllib.request.urlopen(req)html=response.read().decode('utf-8')#實(shí)際上是個(gè)json結(jié)構(gòu),網(wǎng)頁(yè)本身是utf-8,需要轉(zhuǎn)換為python的unicode#json的運(yùn)用:輕量級(jí)數(shù)據(jù)交換import jsontarget=json.loads(html)#轉(zhuǎn)換成字典格式print('翻譯結(jié)果:%s' % target['translateResult'][0][0]['tgt'])time.sleep(5)#延遲5秒再響應(yīng),防止服務(wù)器攔截爬蟲(chóng)

3.設(shè)置代理

1)參數(shù)是一個(gè)字典

2)定制、創(chuàng)建一個(gè)opener

3)安裝調(diào)用opener

注意:在opener里添加headers信息時(shí),注意是個(gè)list

***百度搜出來(lái)的很多地址都不可用,推薦測(cè)試ip地址網(wǎng)站 https://www.kuaidaili.com/free/intr/

import urllib.requesturl='http://www.whatismyip.com.tw'proxy_support=urllib.request.ProxyHandler({'http':'119.90.126.106:7777'})#1)參數(shù)是一個(gè)字典 opener=urllib.request.build_opener(proxy_support)#2)定制、創(chuàng)建一個(gè)opener opener.addheaders=[('User-Agent','Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36')] #添加headers信息,避免反爬蟲(chóng),注意:這里不是字典,而是一個(gè)list urllib.request.install_opener(opener)#3)安裝opener response = urllib.request.urlopen(url) #4)調(diào)用opener html=response.read().decode('utf-8') print(html)

輸出結(jié)果如下:

<!DOCTYPE HTML> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <meta name="viewport" content="width=device-width,initial-scale=1.0"> <meta name="description" content="查我的IP,查IP國(guó)家,查代理IP及真實(shí)IP"/> <meta name="keywords" content="查ip,ip查詢(xún),查我的ip,我的ip位址,我的ip位置,我的ip國(guó)家,偵測(cè)我的ip,查詢(xún)我的ip,查看我的ip,顯示我的ip,what is my IP,whatismyip,my IP address,my IP proxy"/> <link rel="icon" href="data:;base64,iVBORw0KGgo="> <title>我的IP位址查詢(xún)</title></head><body> <h1>IP位址</h1> <span data-ip='119.90.126.106'><b style='font-size: 1.5em;'>119.90.126.106</b></span> <span data-ip-country='CN'><i>CN</i></span><h1>真實(shí)IP</h1> <span data-ip-real='*.*.*.*'><b style='font-size: 1.5em;'>*.*.*.*</b></span> <span data-ip-real-country='CN'><i>CN</i></span><script type="application/json" id="ip-json"> { "ip": "119.90.126.106", "ip-country": "CN", "ip-real": "*.*.*.*", "ip-real-country": "CN" } </script><script type="text/javascript"> var sc_project=6392240; var sc_invisible=1; var sc_security="65d86b9d"; var sc_https=1; var sc_remove_link=1; var scJsHost = (("https:" == document.location.protocol) ? "https://secure." : "http://www.");var _scjs = document.createElement("script"); _scjs.async = true; _scjs.type = "text/javascript"; _scjs.src = scJsHost + "statcounter.com/counter/counter.js"; var _scnode = document.getElementsByTagName("script")[0]; _scnode.parentNode.insertBefore(_scjs, _scnode); </script> <noscript><div class="statcounter"><img class="statcounter" src="http://c.statcounter.com/6392240/0/65d86b9d/1/" alt="statcounter"></div></noscript></body> </html>


總結(jié)

以上是生活随笔為你收集整理的爬虫入门-爬取有道在线翻译结果(2)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。