一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何解決爬蟲被封的問題

電子工程師 ? 來源: fqj ? 2019-04-24 09:47 ? 次閱讀

如果你在爬蟲過程中有遇到“您的請求太過頻繁,請稍后再試”,或者說代碼完全正確,可是爬蟲過程中突然就訪問不了,那么恭喜你,你的爬蟲被對方識破了,輕則給予友好提示警告,嚴重的可能會對你的ip進行封禁,所以代理ip那就尤為重要了。今天我們就來談一下代理IP,去解決爬蟲被封的問題。

網(wǎng)上有許多代理ip,免費的、付費的。大多數(shù)公司爬蟲會買這些專業(yè)版,對于普通人來說,免費的基本滿足我們需要了,不過免費有一個弊端,時效性不強,不穩(wěn)定,所以我們就需要對采集的ip進行一個簡單的驗證。

1.目標采集

本文主要針對西刺代理,這個網(wǎng)站很早之前用過,不過那個時候它還提供免費的api,現(xiàn)在api暫不提供了,我們就寫個簡單的爬蟲去采集。

打開西刺代理,有幾個頁面,果斷選擇高匿代理。

如何解決爬蟲被封的問題

Chrome瀏覽器右鍵檢查查看network,不難發(fā)現(xiàn),每個ip地址都在td標簽中,對于我們來說就簡單許多了,初步的想法就是獲取所有的ip,然后校驗可用性,不可用就剔除。

如何解決爬蟲被封的問題

定義匹配規(guī)則

importreip_compile=re.compile(r'(d+.d+.d+.d+)')#匹配IPport_compile=re.compile(r'(d+)')#匹配端口

2.校驗 這里我使用淘寶ip地址庫檢驗可用性

2.1、關(guān)于淘寶IP地址庫

目前提供的服務(wù)包括:1. 根據(jù)用戶提供的IP地址,快速查詢出該IP地址所在的地理信息和地理相關(guān)的信息,包括國家、省、市和運營商。2. 用戶可以根據(jù)自己所在的位置和使用的IP地址更新我們的服務(wù)內(nèi)容。我們的優(yōu)勢:1. 提供國家、省、市、縣、運營商全方位信息,信息維度廣,格式規(guī)范。2. 提供完善的統(tǒng)計分析報表,省準確度超過99.8%,市準確度超過96.8%,數(shù)據(jù)質(zhì)量有保障。

2.2、接口說明

請求接口(GET):http://ip.taobao.com/service/getIpInfo.php?ip=[ip地址字符串]例:http://ip.taobao.com/service/getIpInfo2.php?ip=111.177.181.44

響應(yīng)信息:(json格式的)國家 、?。ㄗ灾螀^(qū)或直轄市)、市(縣)、運營商

返回數(shù)據(jù)格式:

{"code":0,"data":{"ip":"210.75.225.254","country":"u4e2du56fd","area":"u534eu5317","region":"u5317u4eacu5e02","city":"u5317u4eacu5e02","county":"","isp":"u7535u4fe1","country_id":"86","area_id":"100000","region_id":"110000","city_id":"110000","county_id":"-1","isp_id":"100017"}}

其中code的值的含義為,0:成功,1:失敗。

注意:為了保障服務(wù)正常運行,每個用戶的訪問頻率需小于10qps。我們先通過瀏覽器測試一下

輸入地址http://ip.taobao.com/service/getIpInfo2.php?ip=111.177.181.44

如何解決爬蟲被封的問題

再次輸入一個地址http://ip.taobao.com/service/getIpInfo2.php?ip=112.85.168.98

代碼操作

importrequestscheck_api="http://ip.taobao.com/service/getIpInfo2.php?ip="api=check_api+iptry:response=requests.get(url=api,headers=api_headers,timeout=2)print("ip:%s 可用"%ip)exceptExceptionase:print("此ip %s 已失效:%s"%(ip,e))

3.代碼

代碼中加入了異常處理,其實自己手寫的demo寫不寫異常處理都可以,但是為了方便其他人調(diào)試,建議在可能出現(xiàn)異常的地方加入異常處理。

importrequestsimportreimportrandomfrombs4importBeautifulSoupua_list=[ "Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/72.0.3626.109Safari/537.36", "Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/62.0.3202.75Safari/537.36", "Mozilla/5.0(Macintosh;IntelMacOSX10_13_6)AppleWebKit/537.36(KHTML,likeGecko)Chrome/72.0.3626.119Safari/537.36", "Mozilla/5.0(WindowsNT6.1;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/45.0.2454.101Safari/537.36" ]defip_parse_xici(page):""":param page:采集的頁數(shù):return:""" ip_list=[] forpginrange(1,int(page)): url='http://www.xicidaili.com/nn/'+str(pg) user_agent=random.choice(ua_list) my_headers={ 'Accept':'text/html,application/xhtml+xml,application/xml;', 'Accept-Encoding':'gzip,deflate,sdch', 'Accept-Language':'zh-CN,zh;q=0.8', 'Referer':'http://www.xicidaili.com/nn', 'User-Agent':user_agent } try: r=requests.get(url,headers=my_headers) soup=BeautifulSoup(r.text,'html.parser') exceptrequests.exceptions.ConnectionError: print('ConnectionError') else: data=soup.find_all('td') #定義IP和端口Pattern規(guī)則 ip_compile=re.compile(r'(d+.d+.d+.d+)')#匹配IP port_compile=re.compile(r'(d+)')#匹配端口 ips=re.findall(ip_compile,str(data))#獲取所有IP ports=re.findall(port_compile,str(data))#獲取所有端口 check_api="http://ip.taobao.com/service/getIpInfo2.php?ip=" foriinrange(len(ips)): ifi

運行代碼:

日志

4.為你的爬蟲加入代理ip

建議大家可以把采集的ip存入數(shù)據(jù)庫,這樣每次爬蟲的時候直接調(diào)用即可,順便提一下代碼中怎么加入代理ip。

importrequestsurl='www.baidu.com'headers={ "User-Agent":"Mozilla/5.0(Macintosh; IntelMacOSX10_13_6)AppleWebKit/537.36(KHTML, likeGecko)Chrome/72.0.3626.119Safari/537.36",}proxies={ "http":"http://111.177.181.44:9999", #"https":"https://111.177.181.44:9999", } res=requests.get(url=url,headers=headers,proxies=proxies)

好了,媽媽再也不擔心我爬蟲被封了,代碼可從文中復制粘貼。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • IP
    IP
    +關(guān)注

    關(guān)注

    5

    文章

    1767

    瀏覽量

    151032
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4880

    瀏覽量

    70025
  • 爬蟲
    +關(guān)注

    關(guān)注

    0

    文章

    83

    瀏覽量

    7284

原文標題:聽說你的爬蟲被封了?

文章出處:【微信號:atleadai,微信公眾號:LeadAI OpenLab】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    Python數(shù)據(jù)爬蟲學習內(nèi)容

    ,利用爬蟲,我們可以解決部分數(shù)據(jù)問題,那么,如何學習Python數(shù)據(jù)爬蟲能?1.學習Python基礎(chǔ)知識并實現(xiàn)基本的爬蟲過程一般獲取數(shù)據(jù)的過程都是按照 發(fā)送請求-獲得頁面反饋-解析并且存儲數(shù)據(jù) 這三個
    發(fā)表于 05-09 17:25

    應(yīng)對反爬蟲的策略

    被機器人肆意地濫用,網(wǎng)站的安全和流量費用就會面臨嚴重威脅,因此很多網(wǎng)站都會想辦法防止爬蟲程序接入。為了能夠更好的爬蟲,我們需要使用可變的ip地址,建立網(wǎng)絡(luò)爬蟲的第一原則是:所有信息都可以偽造。但是有
    發(fā)表于 12-12 17:39

    如何提高爬蟲采集效率

    次數(shù)  單次爬蟲的主要把時間消耗在網(wǎng)絡(luò)請求等待響應(yīng)上面,所以能減少網(wǎng)站訪問就減少網(wǎng)站訪問,既減少自身的工作量,也減輕網(wǎng)站的壓力,還降低被封的風險?! 〉谝徊揭龅木褪橇鞒虄?yōu)化,盡量精簡流程,一些數(shù)據(jù)
    發(fā)表于 12-23 17:16

    網(wǎng)絡(luò)爬蟲之關(guān)于爬蟲http代理的常見使用方式

    在做爬蟲的過程中,如果你爬取的頻率過快,不符合人的操作模式。有些網(wǎng)站的反爬蟲機制通過監(jiān)測到你的IP異常,訪問頻率過高。就會對你進行封IP處理。目前已有比較多的第三方平臺專門進行代理IP的服務(wù),那
    發(fā)表于 04-26 17:43

    網(wǎng)絡(luò)爬蟲nodejs爬蟲代理配置

    隨著互聯(lián)網(wǎng)的發(fā)展進步,現(xiàn)在互聯(lián)網(wǎng)上也有許多網(wǎng)絡(luò)爬蟲。網(wǎng)絡(luò)爬蟲通過自己爬蟲程序向目標網(wǎng)站采集相關(guān)數(shù)據(jù)信息。當然互聯(lián)網(wǎng)的網(wǎng)站會有反爬策略。比如某電商網(wǎng)站就會限制一個用戶IP的訪問頻率,從而出現(xiàn)驗證碼
    發(fā)表于 09-01 17:23

    Golang爬蟲語言接入代理?

    golang語言也是爬蟲中的一種框架語言。當然很多網(wǎng)絡(luò)爬蟲新手都會面臨選擇什么語言適合于爬蟲。一般很多爬蟲用戶都會選擇python和java框架語言來寫
    發(fā)表于 09-09 17:41

    什么是爬蟲?

    什么是爬蟲?爬蟲的價值?最簡單的python爬蟲爬蟲基本架構(gòu)
    發(fā)表于 11-05 06:13

    如何運行imdb爬蟲?

    imdbcn爬蟲實例 imdbcn網(wǎng)站結(jié)構(gòu)分析 創(chuàng)建爬蟲項目 運行imdb爬蟲
    發(fā)表于 11-05 07:07

    0基礎(chǔ)入門Python爬蟲實戰(zhàn)課

    大數(shù)據(jù)時代,有兩種技能可以給自己增加競爭優(yōu)勢。一種是數(shù)據(jù)分析,旨在挖掘數(shù)據(jù)的價值,做出最佳決策;另一種是數(shù)據(jù)獲取,即爬蟲。學會它,相當于在數(shù)據(jù)時代掌握了攫取能源的最有效方式。谷歌百度等搜索引擎的崛起
    發(fā)表于 07-25 09:28

    python網(wǎng)絡(luò)爬蟲概述

    網(wǎng)絡(luò)爬蟲(Web Spider)又稱網(wǎng)絡(luò)蜘蛛、網(wǎng)絡(luò)機器人,是一種按照一定的規(guī)則,自動地抓取萬維網(wǎng)信息的程序或者腳本。網(wǎng)絡(luò)爬蟲按照系統(tǒng)結(jié)構(gòu)和實現(xiàn)技術(shù),大致可分為一下幾種類型:通用網(wǎng)絡(luò)爬蟲:就是盡可能
    發(fā)表于 03-21 16:51

    python爬蟲入門教程之python爬蟲視頻教程分布式爬蟲打造搜索引擎

    本文檔的主要內(nèi)容詳細介紹的是python爬蟲入門教程之python爬蟲視頻教程分布式爬蟲打造搜索引擎
    發(fā)表于 08-28 15:32 ?30次下載

    爬蟲是如何實現(xiàn)數(shù)據(jù)的獲取爬蟲程序如何實現(xiàn)

    進入大數(shù)據(jù)時代,爬蟲技術(shù)越來越重要,因為它是獲取數(shù)據(jù)的一個重要手段,是大數(shù)據(jù)和云計算的基礎(chǔ)。那么,爬蟲到底是如何實現(xiàn)數(shù)據(jù)的獲取的呢?今天和大家分享的就是一個系統(tǒng)學習爬蟲技術(shù)的過程:先掌握爬蟲
    發(fā)表于 01-02 16:30 ?10次下載
    <b class='flag-5'>爬蟲</b>是如何實現(xiàn)數(shù)據(jù)的獲取<b class='flag-5'>爬蟲</b>程序如何實現(xiàn)

    Python爬蟲 你真的會寫爬蟲嗎?

    你以為你真的會寫爬蟲了嗎?快來看看真正的爬蟲架構(gòu)!
    的頭像 發(fā)表于 05-02 17:02 ?4126次閱讀
    Python<b class='flag-5'>爬蟲</b> 你真的會寫<b class='flag-5'>爬蟲</b>嗎?

    何解決Python爬蟲中文亂碼問題?Python爬蟲中文亂碼的解決方法

    何解決Python爬蟲中文亂碼問題?Python爬蟲中文亂碼的解決方法 在Python爬蟲過程中,遇到中文亂碼問題是常見的情況。亂碼問題主要是由于編碼不一致所導致的,下面我將詳細介紹
    的頭像 發(fā)表于 01-12 15:11 ?2907次閱讀

    詳細解讀爬蟲多開代理IP的用途,以及如何配置!

    爬蟲多開代理IP是一種在爬蟲開發(fā)中常用的技術(shù)策略,主要用于提高數(shù)據(jù)采集效率、避免IP被封禁以及獲取地域特定的數(shù)據(jù)。
    的頭像 發(fā)表于 09-14 07:55 ?679次閱讀