小編給大家分享一下python爬蟲之如何抓取高匿ip代理,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

很多網(wǎng)站都有反爬蟲機(jī)制,只用一個ip去頻繁訪問網(wǎng)站的話,很容易引起網(wǎng)站管理員的注意,如果管理員將這個ip加入黑名單,那么這個爬蟲就廢掉了。所以,想要做大型的爬蟲的話,基本上是必須要面對ip的問題。
那么問題來了,我們?nèi)ツ睦锔愦韎p呢??第一種方法就是買買買!!沒有什么事情是用錢解決不了的,如果有,那就加倍。
當(dāng)然,網(wǎng)上也有一堆免費的ip代理,但是,免費的質(zhì)量參差不齊,所以就需要進(jìn)行篩選。以西刺代理為例:用爬蟲爬取國內(nèi)的高匿代理IP,并進(jìn)行驗證。(只爬取前五頁,后面的失效太多,沒有必要去驗證了。)
class XiciSpider(scrapy.Spider):
name = 'xici'
allowed_domains = ['xicidaili.com']
start_urls = []
for i in range(1, 6):
start_urls.append('http://www.xicidaili.com/nn/' + str(i))
def parse(self, response):
ip = response.xpath('//tr[@class]/td[2]/text()').extract()
port = response.xpath('//tr[@class]/td[3]/text()').extract()
agreement_type = response.xpath('//tr[@class]/td[6]/text()').extract()
proxies = zip(ip, port, agreement_type)
# print(proxies)
# 驗證代理是否可用
for ip, port, agreement_type in proxies:
proxy = {'http': agreement_type.lower() + '://' + ip + ':' + port,
'https': agreement_type.lower() + '://' + ip + ':' + port}
try:
# 設(shè)置代理鏈接 如果狀態(tài)碼為200 則表示該代理可以使用
print(proxy)
resp = requests.get('http://icanhazip.com', proxies=proxy, timeout=2)
print(resp.status_code)
if resp.status_code == 200:
print(resp.text)
# print('success %s' % ip)
item = DailiItem()
item['proxy'] = proxy
yield item
except:
print('fail %s' % ip)Pipeline:
class DailiPipeline(object):
def __init__(self):
self.file = open('proxy.txt', 'w')
def process_item(self, item, spider):
self.file.write(str(item['proxy']) + '\n')
return item
def close_spider(self, spider):
self.file.close()以上是“python爬蟲之如何抓取高匿ip代理”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
分享名稱:python爬蟲之如何抓取高匿ip代理-創(chuàng)新互聯(lián)
瀏覽地址:http://chinadenli.net/article48/gcohp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設(shè)、響應(yīng)式網(wǎng)站、App設(shè)計、定制開發(fā)、標(biāo)簽優(yōu)化、服務(wù)器托管
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容