采集15个代理IP网站,打造免费代理IP池
采集的站点:
免费代理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池的更多相关文章
- Python练习:爬虫练习,从一个提供免费代理的网站中爬取IP地址信息
西刺代理,http://www.xicidaili.com/,提供免费代理的IP,是爬虫程序的目标网站. 开始写程序 import urllib.requestimport re def open_u ...
- 免费代理ip爬虫分享
分享一个某代理网站的免费代理ip的爬虫,直接复制到pycharm运行就可以了. 注意:爬取的代理ip有点坑,因为是免费的所以过期时间很快,可能1分钟后就会失效.并且在scrapy使用这些代理ip还会给 ...
- 常见的User-Agent及免费代理IP网站
常见的User-Agent 1.Android Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03D) AppleWebKit/535.19 ...
- 海外网站如何通过代理IP进行采集?
海外网站如何通过代理IP进行采集? 我们在做爬虫的时候,经常会遇到这种情况,爬虫最初运行的时候,数据是可以正常获取的,一切看起来都那么的美好,然而,不一会儿,就可能会出现403 Forbidden , ...
- fastapi+vue搭建免费代理IP网站部署至heroku
说明 最近需要用到一些HTTP的代理,用于爬虫去爬取信息,搜索了一些网站,貌似现在这类提供免费代理IP的网站很多,刚好最近看了点vue的视频,弄个网站练练. 部署到heroku,预览地址:点击这里 F ...
- 记一次企业级爬虫系统升级改造(六):基于Redis实现免费的IP代理池
前言: 首先表示抱歉,春节后一直较忙,未及时更新该系列文章. 近期,由于监控的站源越来越多,就偶有站源做了反爬机制,造成我们的SupportYun系统小爬虫服务时常被封IP,不能进行数据采集. 这时候 ...
- 如何维护一个1000 IP的免费代理池
楔子 好友李博士要买房了, 前几天应邀帮他抓链家的数据分析下房价, 爬到一半遇到了验证码. 李博士的想法是每天把链家在售的二手房数据都抓一遍, 然后按照时间序列分析. 链家线上在交易的二手房数据大概有 ...
- 码农代理免费代理ip端口字段js加密破解
起因 之前挖过爬取免费代理ip的坑,一个比较帅的同事热心发我有免费代理ip的网站,遂研究了下:https://proxy.coderbusy.com/. 解密 因为之前爬过类似的网站有了些经验,大概知 ...
- Python3.x:免费代理ip的批量获取并入库
Python3.x:免费代理ip的批量获取并入库 一.简介 网络爬虫的世界,向来都是一场精彩的攻防战.现在许多网站的反爬虫机制在不断的完善,其中最令人头疼的,莫过于直接封锁你的ip.但是道高一尺魔高一 ...
随机推荐
- EasyExcel写入百万级数据到多sheet---非注解方式
EasyExcel是什么? 快速.简单避免OOM的java处理Excel工具 一.项目需求 从mongo库中查询数据,导出到excel文件中.但是动态导出的excel有多少列.列名是什么.有多少she ...
- rust猜数游戏代码
use std::io; use rand::Rng; use std::cmp::Ordering; fn main() { println!("Guess the number!&quo ...
- CTF SQL注入
目录 一.宽字节注入 二.基于约束的注入 三.报错注入 四.时间盲注 五.bool盲注 六.order by的注入 六.INSERT.UPDATE.DELETE相关的注入 七.堆叠注入 八.常用绕过 ...
- Learning Context Graph for Person Search
Learning Context Graph for Person Search 2019-06-24 09:14:03 Paper:http://openaccess.thecvf.com/cont ...
- redis 使用redis Desktop manger进行远程进行链接
1.修改redis.conf文件: a.去掉bind:127.0.0.0 b.protected mode 模式改成 no 2.重启redis /etc/init.d/redis restart 3. ...
- tomcat请求响应代码分享
NioEndpoint的Poller轮询器持续进行扫描是否有新的event()方法调用后产生新的event配置. 发现后执行AbstractProtocol.class中的process()方法进行处 ...
- 微信小程序开发——微信小程序下拉刷新真机无法弹回
开发工具中下拉之后页面回弹有一定的延迟,这个时间也有点久.真机测试,下拉后连回弹都没有,这个问题要解决,就得在下拉函数里加上停止下拉刷新的API,如下: /** * 下拉刷新 */ onPullDow ...
- Java 枚举使用总结
目录 1.枚举基础 1.1.创建枚举最简单的方式 1.2.简单使用 2.枚举的构造方法 2.1.使用注释方式说明 2.2.使用构造方法 2.3.使用带有构造器的枚举 3.就这些了? 3.1.需求 3. ...
- Python高级笔记(九)Python使用MySQL
1. MySQL基本使用 1.1 数据库简介 Mysql: 关系型数据库,做网站 redis:当作缓存 mongodb:非关系型数据库,做爬虫 SQL语句: DQL:数据查询语言,用于对数据进行查询, ...
- 转 Shell判断字符串包含关系的几种方法
https://blog.csdn.net/rznice/article/details/71086839 Shell中判断字符串包含关系的方法: 1.通过grep来判断:12str1="a ...