采集的站点:

免费代理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. 记一次企业级爬虫系统升级改造(六):基于Redis实现免费的IP代理池

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

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

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

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

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

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

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

  9. 采集爬虫中,解决网站限制IP的问题? - wendi_0506的专栏 - 博客频道 - CSDN.NET

    采集爬虫中,解决网站限制IP的问题? - wendi_0506的专栏 - 博客频道 - CSDN.NET undefined

随机推荐

  1. Divide and conquer:Aggressive Cows(POJ 2456)

    侵略性的牛 题目大意:C头牛最大化他们的最短距离 常规题,二分法即可 #include <iostream> #include <algorithm> #include < ...

  2. VS2013 修改TFS的本地映射路径

    在源代码管理器里面 找到你的本地工作区 然后点击编辑按钮 修改本地目录

  3. swfit-pod使用

    一.查询第三方版本号 pod search  SDWebImage 二.项目添加pod 1.在终端打开项目路径 2.输入  pod init 生成Podfile 三.在Podfile输入需要的第三方 ...

  4. Struts2 - Rest(2)

    (上篇:Struts2 - Rest(1)) 6) 加入user-index.jsp到/WEB-INF/content中: <%@ page language="java" ...

  5. sendkeys &amp;&amp; appactivate

    sendkeys    用于输入键盘按键 appactivate 用于聚焦程序 on error resume next set ws = createObject("wscript.she ...

  6. Spring MVC中页面向后台传值的几种方式

    在学习 Spring Mvc 过程中,有必要来先了解几个关键参数:   @Controller:         在类上注解,则此类将编程一个控制器,在项目启动 Spring 将自动扫描此类,并进行对 ...

  7. ubuntu 14.04 中找不到 libgtk-x11-2.0.so

    如果ubuntu安装的64位的,在其中安装32位软件时就会碰到缺失libgtk-x11-2.0.so的情况 比如用wine安装qq时 启动qq时就会报这样的错误 error : cannot open ...

  8. openssl enc(对称加密)

    openssl系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html 对称加密工具.了解对称加密的原理后就很简单了,原理部分见下文. openss ...

  9. mongodb对数据的增删改查

    数据类型 下表为MongoDB中常用的几种数据类型: Object ID:文档ID String:字符串,最常用,必须是有效的UTF-8 Boolean:存储一个布尔值,true或false Inte ...

  10. zk请求和响应对

    zk的请求和响应是通过id对应上的: 请求头(RequestHeader)和响应头(ReplyHeader)共用一个xid,它的本质是ClientCnxn类中的一个计数器. 1. 首先看客户端: Pa ...