爬取免费代理上网/组建IP代理池

使用python爬虫对网上公开免费代理网站进行爬取,组件自己的代理池进行代理上网

先找到某公开免费代理网站

程序思路非常清晰明确,直接放到爬虫代码里,就不单独介绍

编写程序脚本进行捕获源码和清洗

import requests
from selenium import webdriver
import re
import parsel

url = 'https://www.xxxxx.com/free/'  #应审核要求网站打码......
c_o = webdriver.ChromeOptions()
c_o.add_argument('--headless')
browser = webdriver.Chrome(options=c_o) #设置无界面爬取选项
browser.get(url)
data = browser.page_source#获取源码
#print(data)
yu_ming = '<td data-title="IP">(.*?)</td>'  #网页源码中用非贪婪匹筛选出IP
yuming = re.findall(yu_ming, data, re.S)
print(yuming)

duan_kou = '<td data-title="PORT">(.*?)</td>'#同上筛选出端口
duankou = re.findall(duan_kou, data, re.S)
print(duankou)

for IP, PORT in zip(yuming, duankou):
    #print(IP,':',PORT)
    proxy = IP + ':' + PORT
    proxies_dict = {
    
                  #将IP和端口以http和https拼合一起
        "http://":"http://"+proxy,
        "https://":"https://"+proxy,
    }
  #  print(proxies_dict)

response = requests.get(url, proxies_dict, timeout=2) #测试拼合出的代理是否可用正常使用
if response.status_code == 200:
    print("这个代理:", proxies_dict, "可用")
else:
    print("经过测试本次爬取中无可用代码")

理论上这种免费IP代理配置非常低,几百个都很少有几个能正常使用的,这里运气不错在第一页爬取就找到个可用的

image-20220723213629594

验证一下,可以正常使用IP代理进行网页访问

image-20220723212941044

然后就可以将爬取到的可用IP放到代理插件里进行代理浏览网页

image-20220723225742281

稍微观察一下url翻页的规律,然后把翻页变量加入url,再加上for in range的循环就可以进行多页爬取,爬取n页源码筛选捕获所有可用IP就可以组建自己的代理池

原本事情就这样告一段落,

但之后继续对的爬虫代码功能完善和测试中发现 对网站进行多次爬取/多页爬取,经常会发生如下图所示,网站检测到爬取痕迹然后被ban

image-20220723225226427

很明显的反爬手段,可以开本机代理或者用已有代理池IP继续爬取,只不过之后反爬的检测会愈加频繁

甚至出现多页爬取爬着爬着就被ban了

比如这里爬到第六页中途就被ban

image-20220723231445989

这里仍有解决方式,就是准备已有代理池进行随机选取代理爬取,

只不过这种方法并不实用,对于普通人而言所付出代价高于收益,源码就不放了

猜你喜欢

转载自blog.csdn.net/NZXHJ/article/details/125954353