经常写爬虫,难免会遇到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并检验可用性的实例