Python爬蟲(chóng)抓取代理IP并檢驗(yàn)可用性的實(shí)例
經(jīng)常寫(xiě)爬蟲(chóng),難免會(huì)遇到ip被目標(biāo)網(wǎng)站屏蔽的情況,銀次一個(gè)ip肯定不夠用,作為節(jié)約的程序猿,能不花錢(qián)就不花錢(qián),那就自己去找吧,這次就寫(xiě)了下抓取 西刺代理上的ip,但是這個(gè)網(wǎng)站也反爬!??!
至于如何應(yīng)對(duì),我覺(jué)得可以通過(guò)增加延時(shí)試試,可能是我抓取的太頻繁了,所以被封IP了。
但是,還是可以去IP巴士試試的,條條大路通羅馬嘛,不能吊死在一棵樹(shù)上。
不廢話,上代碼。
#!/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è)人感覺(jué)代碼里沒(méi)有太復(fù)雜的,就沒(méi)有加注釋?zhuān)嘈糯蠹一究梢岳斫?,如有?wèn)題也請(qǐng)多批評(píng)指正,共同進(jìn)步!
以上這篇Python爬蟲(chóng)抓取代理IP并檢驗(yàn)可用性的實(shí)例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- Python爬蟲(chóng)代理IP池實(shí)現(xiàn)方法
- Python爬蟲(chóng)設(shè)置代理IP的方法(爬蟲(chóng)技巧)
- Python實(shí)現(xiàn)爬蟲(chóng)設(shè)置代理IP和偽裝成瀏覽器的方法分享
- 通過(guò)Python爬蟲(chóng)代理IP快速增加博客閱讀量
- Python爬蟲(chóng)常用小技巧之設(shè)置代理IP
- selenium+python設(shè)置爬蟲(chóng)代理IP的方法
- Python爬蟲(chóng)爬取新浪微博內(nèi)容示例【基于代理IP】
- Python3網(wǎng)絡(luò)爬蟲(chóng)之使用User Agent和代理IP隱藏身份
- python 爬蟲(chóng) 批量獲取代理ip的實(shí)例代碼
- Python代理IP爬蟲(chóng)的新手使用教程
相關(guān)文章
Python爬蟲(chóng)之Selenium多窗口切換的實(shí)現(xiàn)
這篇文章主要介紹了Python爬蟲(chóng)之Selenium多窗口切換的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
python讀寫(xiě)數(shù)據(jù)讀寫(xiě)csv文件(pandas用法)
這篇文章主要介紹了python讀寫(xiě)數(shù)據(jù)讀寫(xiě)csv文件(pandas用法),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
Python日志無(wú)延遲實(shí)時(shí)寫(xiě)入的示例
今天小編就為大家分享一篇Python日志無(wú)延遲實(shí)時(shí)寫(xiě)入的示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-07-07
一篇文章帶你了解Python和Java的正則表達(dá)式對(duì)比
正則表達(dá)式有元字符及不同組合來(lái)構(gòu)成,通過(guò)巧妙的構(gòu)造正則表達(dá)式可以匹配任意字符串,并完成復(fù)雜的字符串處理任務(wù),希望本片文章能給你帶來(lái)幫助2021-09-09
用60行代碼實(shí)現(xiàn)Python自動(dòng)搶微信紅包
這篇文章主要介紹了用60行代碼實(shí)現(xiàn)Python自動(dòng)搶微信紅包,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02
在Python dataframe中出生日期轉(zhuǎn)化為年齡的實(shí)現(xiàn)方法
這篇文章主要介紹了在Python dataframe中出生日期轉(zhuǎn)化為年齡的實(shí)現(xiàn)方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-10-10
Python進(jìn)階之使用selenium爬取淘寶商品信息功能示例
這篇文章主要介紹了Python進(jìn)階之使用selenium爬取淘寶商品信息功能,結(jié)合實(shí)例形式詳細(xì)分析了Python使用selenium與requests模塊爬取淘寶商品信息的相關(guān)操作技巧,需要的朋友可以參考下2019-09-09
詳解pandas繪制矩陣散點(diǎn)圖(scatter_matrix)的方法
這篇文章主要介紹了詳解pandas繪制矩陣散點(diǎn)圖(scatter_matrix)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04

