采集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.但是道高一尺魔高一 ...
随机推荐
- Java文件上传下载原理
文件上传下载原理 在TCP/IP中,最早出现的文件上传机制是FTP.它是将文件由客户端发送到服务器的标准机制. 但是在jsp编程中不能使用FTP方法来上传文件,这是由jsp运行机制所决定的 文件上传原 ...
- 【spring源码分析】IOC容器解析
参考: https://www.iteye.com/topic/1121913(自动注入bean的扫描器) https://m.imooc.com/mip/article/34150(循环依赖的解决方 ...
- odoo开发笔记 -- 跨域Refused to display in a frame because it set 'X-Frame-Options' to 'DENY'
场景描述: odoo界面嵌入iframe,Refused to display in a frame because it set 'X-Frame-Options' to 'DENY' 跨域请求失败 ...
- 品优购商城项目(五)消息中间件 ActiveMQ
消息中间件用于降低各个项目模块的耦合,适用于不需要等待返回消息才能进入下一个业务环节的模块,以及实时要求性不高的业务模块. 一.JMS JMS(Java Messaging Service)是Java ...
- echarjs—阿里历年双十一销售数据统计及预测
阿里双十一数据统计 <!DOCTYPE html> <html> <head> <title>阿里历年双十一销售数据统计及预测</title> ...
- Flutter UI系统
我们可以看到,无论是Android SDK还是iOS的UIKit 的职责都是相同的,它们只是语言载体和底层的系统不同而已.那么可不可以实现这么一个UI系统:可以使用同一种编程语言开发,然后针对不同操作 ...
- plsql 的三种循环
set serveroutput on declare pnum ; begin loop dbms_output.put_line(pnum); pnum :; end loop; end; / s ...
- 基于Emit的C#下DataTable转实体类方法,一直报错.
xxxx ;WITH Tab AS ( SELECT CAST(ROW_NUMBER()OVER(ORDER BY CC.CreateTime DESC) AS INT) AS Sequency, ) ...
- [LeetCode] 567. Permutation in String 字符串中的全排列
Given two strings s1 and s2, write a function to return true if s2 contains the permutation of s1. I ...
- [LeetCode] 602. Friend Requests II: Who Has Most Friend? 朋友请求 II: 谁有最多的朋友?
In social network like Facebook or Twitter, people send friend requests and accept others' requests ...