免费代理ip的网站,但是结构要是改了的话,自己查看相应的网站结构,自己构造,实在不行的给,和本人联系,然后要是有更多的人知道,更多的免费ip请告知,然后看看能不能爬取,相应的代理ip。
还有就是本人实操作,直接访问的,明面上的代理ip(免费版本最好的是站大爷,但是它的端口号为图片形式的验证码,比较难爬取,所以上面没有,但是能找到的直接提取,不包括注册的大概都在上面。)
代码提取:https://pan.baidu.com/s/1UNZGrPfXBCB15IPx8fUxyw
提取码:3ibj

百度网盘微信扫描
代码里面没有需要的包,需要自己单独引入,里面没有相应的三方库文件。(博客上所有的代码)
有时效检测,和多站抓取的形式的ip代理ip的数据库,redis+flask构建ip代理池.暂时是有效的ip免费代理,速度可想而知,稳定性可想而知,看你情况而定。
def crawl_yundaili(self):
for page in range(1, 4):
start_url = 'http://www.ip3366.net/free/?stype={}'.format(page)
html = get_page(start_url)
ip_adress = re.compile('<tr>.*?<td>(.*?)</td>.*?<td>(.*?)</td>')
# \s* 匹配空格,起到换行作用
re_ip_adress = ip_adress.findall(str(html))
for adress, port in re_ip_adress:
result = adress + ':' + port
yield result.replace(' ', '')
def crawl_kuaidaili(self):
for page in range(1, 4):
# 国内高匿代理
start_url = 'https://www.kuaidaili.com/free/inha/{}/'.format(page)
html = get_page(start_url)
ip_adress = re.compile(
'<td data-title="IP">(.*)</td>\s*<td data-title="PORT">(\w+)</td>'
)
re_ip_adress = ip_adress.findall(str(html))
for adress, port in re_ip_adress:
result = adress + ':' + port
yield result.replace(' ', '')
def crawl_xicidaili(self):
for page in range(1, 4):
start_url = 'http://www.xicidaili.com/nn/{}'.format(page)
html = get_page(start_url)
ip_adress = re.compile(
'<td class="country"><img src="http://fs.xicidaili.com/images/flag/cn.png" alt="Cn" /></td>\s*<td>(.*?)</td>\s*<td>(.*?)</td>'
)
# \s* 匹配空格,起到换行作用
re_ip_adress = ip_adress.findall(str(html))
for adress, port in re_ip_adress:
result = adress + ':' + port
yield result.replace(' ', '')
def crawl_daili66(self, page_count=4):
start_url = 'http://www.66ip.cn/{}.html'
urls = [start_url.format(page) for page in range(1, page_count + 1)]
for url in urls:
print('Crawling', url)
html = get_page(url)
if html:
doc = pq(html)
trs = doc('.containerbox table tr:gt(0)').items()
for tr in trs:
ip = tr.find('td:nth-child(1)').text()
port = tr.find('td:nth-child(2)').text()
yield ':'.join([ip, port])
def crawl_data5u(self):
for i in ['gngn', 'gwgn']:
start_url = 'http://www.data5u.com/free/{}/index.shtml'.format(i)
html = get_page(start_url)
ip_adress = re.compile(
' <ul class="l2">\s*<span><li>(.*?)</li></span>\s*<span style="width: 100px;"><li class=".*">(.*?)</li></span>'
)
# \s * 匹配空格,起到换行作用
re_ip_adress = ip_adress.findall(str(html))
for adress, port in re_ip_adress:
result = adress + ':' + port
yield result.replace(' ', '')
def crawl_jisudaili(self):
for i in range(1, 11):
start_url = 'http://www.superfastip.com/welcome/freeip/{}'.format(i)
html = get_page(start_url)
ip_adress = re.compile('<tr.*?>\s*<td>(.*?)</td>\s*<td>(.*?)</td>')
# \s* 匹配空格,起到换行作用
re_ip_adress = ip_adress.findall(str(html))
for adress, port in re_ip_adress:
result = adress + ':' + port
yield result.replace(' ', '')
def crawl_89ip(self):
for i in range(1, 11):
start_url = 'http://www.89ip.cn/index_{}.html'.format(i)
html = get_page(start_url)
ip_adress = re.compile('<tr>.*?<td>\n\t\t\t(.*?)\t\t</td>\s*<td>\n\t\t\t(.*?)\t\t</td>')
# \s* 匹配空格,起到换行作用
re_ip_adress = ip_adress.findall(str(html))
for adress, port in re_ip_adress:
result = adress + ':' + port
yield result.replace(' ', '')