標籤:append comment pen try 爬取 http tracking print 程式
Python擷取免費的可用代理
在使用爬蟲多次爬取同一網站時,常常會被網站的ip反爬蟲機制給禁掉,這時就能夠通過使用代理來解決。眼下網上有非常多提供最新免費代理列表的網站。這些列表裡非常多的代理主機是可用的,可是也有一些是停用,因此須要進一步篩選。利用Python能夠非常方便地篩選出可用的代理列表。
以提供免費代理資訊的網站IPCN 國家地區免費代理為例,這裡給出一個爬取此網站上提供的代理資訊並篩選可用代理主機的程式。主要用到requests和lxml,詳細代碼為:
# -*- coding: utf-8 -*-import requestsfrom lxml import etreedef get_proxies_from_site(): url = ‘http://proxy.ipcn.org/country/‘ xpath = ‘/html/body/div[last()]/table[last()]/tr/td/text()‘ r = requests.get(url) tree = etree.HTML(r.text) results = tree.xpath(xpath) proxies = [line.strip() for line in results] return proxies#使用http://lwons.com/wx網頁來測試代理主機是否可用def get_valid_proxies(proxies, count): url = ‘http://lwons.com/wx‘ results = [] cur = 0 for p in proxies: proxy = {‘http‘: ‘http://‘ + p} succeed = False try: r = requests.get(url, proxies=proxy) if r.text == ‘default‘: succeed = True except Exception, e: print ‘error:‘, p succeed = False if succeed: print ‘succeed:‘, p results.append(p) cur += 1 if cur >= count: breakif __name__ == ‘__main__‘: print ‘get ‘ + str(len(get_valid_proxies(get_proxies_from_site(), 20))) + ‘ proxies‘
Python擷取免費的可用代理