Python獲取免費的可用代理
阿新 • • 發佈:2017-07-28
ren ont html function mod for pen parent script
Python獲取免費的可用代理
在使用爬蟲多次爬取同一站點時,常常會被站點的ip反爬蟲機制給禁掉,這時就能夠通過使用代理來解決。眼下網上有非常多提供最新免費代理列表的站點。這些列表裏非常多的代理主機是可用的,可是也有一些是不可用的,因此須要進一步篩選。利用Python能夠非常方便地篩選出可用的代理列表。
以提供免費代理信息的站點IPCN 國家地區免費代理為例,這裏給出一個爬取此站點上提供的代理信息並篩選可用代理主機的程序。主要用到requests和lxml,詳細代碼為:
# -*- coding: utf-8 -*-
import requests
from lxml import etree
def 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:
break
if __name__ == ‘__main__‘:
print ‘get ‘ + str(len(get_valid_proxies(get_proxies_from_site(), 20))) + ‘ proxies‘
Python獲取免費的可用代理