Python爬虫抓取代理IP并检验可用性的实例

  

经常写爬虫,难免会遇到ip被目标网站屏蔽的情况,银次一个ip肯定不够用,作为节约的程序猿,能不花钱就不花的钱,那就自己去找吧,这次就写了下抓取西刺代理上的ip,但是这个网站也反爬! ! !

  

至于如何应对,我觉得可以通过增加延时试试,可能是我抓取的太频繁了,所以被封IP了。

  

但是,还是可以去IP巴士试试的,条条大路通罗马嘛,不能吊死在一棵树上。

  


  

        # !/usr/bin/env python   # - * -编码:utf8 - * -   进口urllib2   导入的时间   从bs4进口BeautifulSoup   导入系统   重载(系统)   sys。setdefaultencoding (“utf - 8”)   req_header={“用户代理”:“Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML,像壁虎)Chrome/23.0.1271.64 Safari/537.11”,   “接受”:“text/html、application/xhtml + xml应用程序/xml; q=0.9 */*; q=0.8”,   #“接收语言”:“en - us, en; q=0.8, zh-Hans-CN; q=0.5, zh-Hans; q=0.3”,   “Accept-Charset”:“iso - 8859 - 1, utf - 8; q=0.7 *; q=0.3”,   “接受编码”:“en - us”,   “连接”:“保活”,   “推荐人”:“http://www.baidu.com/?   }   req_timeout=5   testUrl=" http://www.baidu.com/"   testStr="娃哈哈"   file1=开放(“代理。txt”、“w”)   # url=" "   #点播=urllib2.Request (url、没有req_header)   # jsondatas=urllib2.urlopen(要求,没有req_timeout) .read ()   饼干=urllib2.HTTPCookieProcessor ()   checked_num=0   grasp_num=0   页面的范围(160):   要求=urllib2.Request (' http://www.xici.net.co/nn/' + str(页面),没有,req_header)   html_doc=urllib2。urlopen(要求,没有req_timeout) .read ()   # html_doc=urllib2.urlopen (' http://www.xici.net.co/nn/' + str(页面).read ()   汤=BeautifulSoup (html_doc)   trs=汤。找到(“表”,id=癷p_list”) .find_all (tr)   tr在trs [1]:   tds=tr.find_all (td)   ip=tds [1] .text.strip ()   端口=tds [2] .text.strip ()   协议=tds [5] .text.strip ()   如果协议==癏TTP”或协议==癏TTPS”:   #的。写(“% s=% s: % s \ n ' %(协议、ip、端口))   打印的% s=% s: % s %(协议、ip、端口)   grasp_num +=1   proxyHandler=urllib2。ProxyHandler ({“http”: r 'http://% s: % s ' % (ip、端口)})   刀=urllib2。build_opener(饼干,proxyHandler)   首场比赛。addheaders=[(“用户代理”,   Mozilla/5.0 (Windows NT 6.1;WOW64) AppleWebKit/537.36 (KHTML,像壁虎)Chrome/31.0.1650.63 Safari 537.36)]   t1=time.time ()   试一试:   要求的=4蚩?testUrl超时=req_timeout)   结果=req.read ()   timeused=time.time () - t1   pos=result.find (testStr)   如果pos比;1:   file1.write(协议+“t \”+ ip +“\ t”+港口+“\ n”)   checked_num +=1   打印checked_num, grasp_num   其他:   继续   除了例外,e:   继续   file1.close ()   打印checked_num, grasp_num      之前      

个人感觉代码里没有太复杂的,就没有加注释,相信大家基本可以理解,如有问题也请多批评指正,共同进步。

  

以上这篇Python爬虫抓取代理IP并检验可用性的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

Python爬虫抓取代理IP并检验可用性的实例