采集的站点:

免费代理IP http://ip.yqie.com/ipproxy.htm
66免费代理网 http://www.66ip.cn/
89免费代理 http://www.89ip.cn/
无忧代理 http://www.data5u.com/
云代理 http://www.ip3366.net/
快代理 https://www.kuaidaili.com/free/
极速专享代理 http://www.superfastip.com/
HTTP代理IP https://www.xicidaili.com/wt/
小舒代理 http://www.xsdaili.com
西拉免费代理IP http://www.xiladaili.com/
小幻HTTP代理 https://ip.ihuan.me/
全网代理IP http://www.goubanjia.com/
飞龙代理IP http://www.feilongip.com/

采集流程

第一步:获取页面内容

第二步:解析内容获取数据

第三步:数据格式转换

采集流程定制好了之后,把他创建为抽象类 让所有站点去继承它, 子类只需要去实现抽象方法。这是一个比较典型的模板模式

基类

from abc import ABC, abstractmethod
from typing import List
import requests
import bs4
from .model import ProxyModel class AbsFreeProxyBase(ABC):
# 请求
http = requests # 初始化
def __init__(self, url, code, **kwargs):
"""
:param url: 请求地址
:param code: 页面编码
:param kw: 附加信息
"""
self.url = url
self.code = code
self.kwargs = kwargs
self.beautifulsoup = bs4.BeautifulSoup # 模板方法模式
# 第一步 获取页面内容 第二步 解析内容 第二步 格式化数据
def run(self) -> List[ProxyModel]:
text = self.get_page_text()
soup = self.beautifulsoup(text, 'lxml')
data = self.parse_text(soup)
return self.to_proxy(data) # 获取页面内容
def get_page_text(self):
res = AbsFreeProxyBase.http.get(self.url, **self.kwargs)
if not res.ok:
res.raise_for_status()
return res.content.decode(self.code) # 解析内容
@abstractmethod
def parse_text(self, soup: bs4.BeautifulSoup) -> List[list]:
pass # 格式转换
@abstractmethod
def to_proxy(self, data:List[list]) -> List[ProxyModel]:
pass

如:快代理网站

from .base import AbsFreeProxyBase
from typing import List
from .model import ProxyModel
import re '''
快代理
https://www.kuaidaili.com/free
''' class WWW_KUAIDAILI_COM(AbsFreeProxyBase): # 初始化
def __init__(self, url, code='utf-8', **kwargs):
super().__init__(url, code, **kwargs) # 解析内容
def parse_text(self, soup) -> List[list]:
"""
格式如下:
IP port(端口) 匿名度 类型(HTTP/https) 位置 响应速度 最后验证时间
"""
regex = re.compile(r'<td[^>]*>([^<>]+)</td>')
rows = soup.select('.table-bordered tr')
result = []
for row in [str(n) for n in rows]:
item = regex.findall(row)
item and result.append(item)
return result # 格式转换
def to_proxy(self, data: List[list]) -> List[ProxyModel]:
result = []
for item in data:
result.append(ProxyModel(item[3], item[0], item[1], item[2]))
return result

应用实列

from website import ProxyFactory
from browser.agent import useragent factory = ProxyFactory()
headers = {
'user-agent': useragent.random()
}
'''
66免费代理网
www = factory.create('http://www.66ip.cn/mo.php?sxb=&tqsl=100&port=&export=&ktip=&sxa=&submit=%CC%E1++%C8%A1&textarea=',
'gbk',
headers=headers)
''' '''
小幻HTTP代理
www = factory.create('https://ip.ihuan.me/',headers = headers)
''' '''
89免费代理 http://www.89ip.cn/
www = factory.create('http://www.89ip.cn/',headers = headers)
''' '''
无忧代理 http://www.data5u.com/
www = factory.create('http://www.data5u.com/',headers = headers)
''' '''
http://www.goubanjia.com/
全网代理IP
www = factory.create('http://www.goubanjia.com/',headers = headers)
''' '''
云代理 http://www.ip3366.net/
www = factory.create('http://www.ip3366.net/','gbk',headers = headers)
''' '''
快代理
https://www.kuaidaili.com/free
'''
www = factory.create('https://www.kuaidaili.com/free',headers = headers)
data = www.run() print(data)

百度网盘

链接:https://pan.baidu.com/s/1aNiuGpcDmgvUR2HmZKR99Q
提取码:6u82

采集15个代理IP网站,打造免费代理IP池的更多相关文章

  1. Python练习:爬虫练习,从一个提供免费代理的网站中爬取IP地址信息

    西刺代理,http://www.xicidaili.com/,提供免费代理的IP,是爬虫程序的目标网站. 开始写程序 import urllib.requestimport re def open_u ...

  2. 免费代理ip爬虫分享

    分享一个某代理网站的免费代理ip的爬虫,直接复制到pycharm运行就可以了. 注意:爬取的代理ip有点坑,因为是免费的所以过期时间很快,可能1分钟后就会失效.并且在scrapy使用这些代理ip还会给 ...

  3. 常见的User-Agent及免费代理IP网站

    常见的User-Agent 1.Android Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03D) AppleWebKit/535.19 ...

  4. 海外网站如何通过代理IP进行采集?

    海外网站如何通过代理IP进行采集? 我们在做爬虫的时候,经常会遇到这种情况,爬虫最初运行的时候,数据是可以正常获取的,一切看起来都那么的美好,然而,不一会儿,就可能会出现403 Forbidden , ...

  5. fastapi+vue搭建免费代理IP网站部署至heroku

    说明 最近需要用到一些HTTP的代理,用于爬虫去爬取信息,搜索了一些网站,貌似现在这类提供免费代理IP的网站很多,刚好最近看了点vue的视频,弄个网站练练. 部署到heroku,预览地址:点击这里 F ...

  6. 记一次企业级爬虫系统升级改造(六):基于Redis实现免费的IP代理池

    前言: 首先表示抱歉,春节后一直较忙,未及时更新该系列文章. 近期,由于监控的站源越来越多,就偶有站源做了反爬机制,造成我们的SupportYun系统小爬虫服务时常被封IP,不能进行数据采集. 这时候 ...

  7. 如何维护一个1000 IP的免费代理池

    楔子 好友李博士要买房了, 前几天应邀帮他抓链家的数据分析下房价, 爬到一半遇到了验证码. 李博士的想法是每天把链家在售的二手房数据都抓一遍, 然后按照时间序列分析. 链家线上在交易的二手房数据大概有 ...

  8. 码农代理免费代理ip端口字段js加密破解

    起因 之前挖过爬取免费代理ip的坑,一个比较帅的同事热心发我有免费代理ip的网站,遂研究了下:https://proxy.coderbusy.com/. 解密 因为之前爬过类似的网站有了些经验,大概知 ...

  9. Python3.x:免费代理ip的批量获取并入库

    Python3.x:免费代理ip的批量获取并入库 一.简介 网络爬虫的世界,向来都是一场精彩的攻防战.现在许多网站的反爬虫机制在不断的完善,其中最令人头疼的,莫过于直接封锁你的ip.但是道高一尺魔高一 ...

随机推荐

  1. MyBatis中的配置错误creating bean with name 'sqlSessionFactory'

    错误信息如下: 警告: Exception encountered during context initialization - cancelling refresh attempt: org.sp ...

  2. 团队作业-Alpha(2/4)

    队名:软工9组 组长博客:https://www.cnblogs.com/cmlei/ 作业博客:http://edu.cnblogs.com/campus/fzu/SoftwareEngineeri ...

  3. semi-join子查询优化 -- Duplicate Weedout策略

    duplicate weedout是执行semi-join子查询的一种策略. 将semi-join作为一个常规的inner join.然后使用一个临时表,将重复的记录排除. 假设,你有一个查询,你在寻 ...

  4. 爬虫中Requests模块

    Requests: 让 HTTP 服务人类 虽然Python的标准库中 urllib2 模块已经包含了平常我们使用的大多数功能,但是它的 API 使用起来让人感觉不太好,而 Requests 自称 “ ...

  5. Spring整合Redis,并配置Jedis连接池

    目录 只言片语 创建redis连接池的配置文件 单机版 spring整合redis(使用JedisPool) 项目中使用示例 集群版 spring整合redis(使用JedisCluster) 项目中 ...

  6. 关于PLSQL配置了正确的Oracle客户端但是不能识别tnsnames.ora问题

    场景描述: 在通过安装Oracle客户端使用PLSQL的时候发现PLSQL在已经正常配置了Oracle Home和Ocdi library的情况下不能识别tnsnames.ora中的有效配置. 正常安 ...

  7. FromXml 支付回调 xml 转数组

    public function xx(){ $xml = '<xml><appid><![CDATA[xxxxxxxxxxxxx]]></appid> ...

  8. 利用Entity Framework修改指定字段中的值

    利用Entity Framework修改指定字段中的值一般我们编辑某些模型的时候会用到类似这样的代码: [HttpPost] public ActionResult Edit(Article mode ...

  9. [LeetCode] 445. Add Two Numbers II 两个数字相加之二

    You are given two linked lists representing two non-negative numbers. The most significant digit com ...

  10. win7蓝屏死机0x0000003B错误蓝屏故障解决

    win7蓝屏死机0x0000003B错误蓝屏故障解决 刚才一个朋友问我:电脑蓝屏了怎么办. 我问他要了电脑的截图,自己看了错误代码:0x0000003B 搜索资料,查询了一番.都是说电脑中病毒或者是系 ...