Python爬蟲抓取代理IP并檢驗(yàn)可用性的實(shí)例
經(jīng)常寫爬蟲,難免會(huì)遇到ip被目標(biāo)網(wǎng)站屏蔽的情況,銀次一個(gè)ip肯定不夠用,作為節(jié)約的程序猿,能不花錢就不花錢,那就自己去找吧,這次就寫了下抓取 西刺代理上的ip,但是這個(gè)網(wǎng)站也反爬?。?!
至于如何應(yīng)對(duì),我覺得可以通過增加延時(shí)試試,可能是我抓取的太頻繁了,所以被封IP了。
但是,還是可以去IP巴士試試的,條條大路通羅馬嘛,不能吊死在一棵樹上。
不廢話,上代碼。
#!/usr/bin/env python # -*- coding:utf8 -*- import urllib2 import time from bs4 import BeautifulSoup import sys reload(sys) sys.setdefaultencoding( "utf-8" ) req_header = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11', 'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', #'Accept-Language': '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', 'Accept-Encoding':'en-us', 'Connection':'keep-alive', 'Referer':'http://www.baidu.com/' } req_timeout = 5 testUrl = "http://www.baidu.com/" testStr = "wahaha" file1 = open('proxy.txt' , 'w') # url = "" # req = urllib2.Request(url,None,req_header) # jsondatas = urllib2.urlopen(req,None,req_timeout).read() cookies = urllib2.HTTPCookieProcessor() checked_num = 0 grasp_num = 0 for page in range(1, 160): req = urllib2.Request('http://www.xici.net.co/nn/' + str(page), None, req_header) html_doc = urllib2.urlopen(req, None, req_timeout).read() # html_doc = urllib2.urlopen('http://www.xici.net.co/nn/' + str(page)).read() soup = BeautifulSoup(html_doc) trs = soup.find('table', id='ip_list').find_all('tr') for tr in trs[1:]: tds = tr.find_all('td') ip = tds[1].text.strip() port = tds[2].text.strip() protocol = tds[5].text.strip() if protocol == 'HTTP' or protocol == 'HTTPS': #of.write('%s=%s:%s\n' % (protocol, ip, port)) print '%s=%s:%s' % (protocol, ip, port) grasp_num +=1 proxyHandler = urllib2.ProxyHandler({"http": r'http://%s:%s' % (ip, port)}) opener = urllib2.build_opener(cookies, proxyHandler) opener.addheaders = [('User-Agent', 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36')] t1 = time.time() try: req = opener.open(testUrl, timeout=req_timeout) result = req.read() timeused = time.time() - t1 pos = result.find(testStr) if pos > 1: file1.write(protocol+"\t"+ip+"\t"+port+"\n") checked_num+=1 print checked_num, grasp_num else: continue except Exception,e: continue file1.close() print checked_num,grasp_num
個(gè)人感覺代碼里沒有太復(fù)雜的,就沒有加注釋,相信大家基本可以理解,如有問題也請(qǐng)多批評(píng)指正,共同進(jìn)步!
以上這篇Python爬蟲抓取代理IP并檢驗(yàn)可用性的實(shí)例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- Python爬蟲代理IP池實(shí)現(xiàn)方法
- Python爬蟲設(shè)置代理IP的方法(爬蟲技巧)
- Python實(shí)現(xiàn)爬蟲設(shè)置代理IP和偽裝成瀏覽器的方法分享
- 通過Python爬蟲代理IP快速增加博客閱讀量
- Python爬蟲常用小技巧之設(shè)置代理IP
- selenium+python設(shè)置爬蟲代理IP的方法
- Python爬蟲爬取新浪微博內(nèi)容示例【基于代理IP】
- Python3網(wǎng)絡(luò)爬蟲之使用User Agent和代理IP隱藏身份
- python 爬蟲 批量獲取代理ip的實(shí)例代碼
- Python代理IP爬蟲的新手使用教程
相關(guān)文章
python列表推導(dǎo)和生成器表達(dá)式知識(shí)點(diǎn)總結(jié)
在本篇文章里小編給大家整理的是關(guān)于python列表推導(dǎo)和生成器表達(dá)式的相關(guān)知識(shí)點(diǎn)內(nèi)容,需要的朋友們可以參考下。2020-01-01python實(shí)現(xiàn)簡(jiǎn)單俄羅斯方塊
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)簡(jiǎn)單俄羅斯方塊,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-03-03python實(shí)現(xiàn)合并兩個(gè)數(shù)組的方法
這篇文章主要介紹了python實(shí)現(xiàn)合并兩個(gè)數(shù)組的方法,實(shí)例分析了兩種常用的合并數(shù)組的技巧,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下2015-05-05python中nan與inf轉(zhuǎn)為特定數(shù)字方法示例
這篇文章主要給大家介紹了將python中nan與inf轉(zhuǎn)為特定數(shù)字的方法,文中給出了詳細(xì)的示例代碼和運(yùn)行結(jié)果,對(duì)大家的理解和學(xué)習(xí)具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧。2017-05-05剖析Django中模版標(biāo)簽的解析與參數(shù)傳遞
這篇文章主要介紹了剖析Django中模版標(biāo)簽的解析與參數(shù)傳遞,Django是重多高人氣Python框架中最為著名的一個(gè),需要的朋友可以參考下2015-07-07pytorch中torch.max和Tensor.view函數(shù)用法詳解
今天小編就為大家分享一篇pytorch中torch.max和Tensor.view函數(shù)用法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-01-01圖文詳解Python中最神秘的一個(gè)魔法函數(shù)
Python進(jìn)階之路我覺得有兩個(gè)東西一定要了解,一個(gè)是魔法函數(shù),下面這篇文章主要給大家介紹了關(guān)于Python中最神秘的一個(gè)魔法函數(shù)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2021-12-12