採集15個代理IP網站,打造免費代理IP池

来源:https://www.cnblogs.com/whnba/archive/2019/11/17/11878802.html
-Advertisement-
Play Games

採集的站點: 免費代理IP http://ip.yqie.com/ipproxy.htm66免費代理網 http://www.66ip.cn/89免費代理 http://www.89ip.cn/無憂代理 http://www.data5u.com/雲代理 http://www.ip3366.net/ ...


採集的站點:

免費代理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


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 前後端分離已經是老生常談的話題了,甚至再談前後端分離顯得比較落伍。之所以想談談前後端分離,是因為在這種分工模式下實實在在的遇到了一些問題。這篇文章希望對前後端分離做一個簡單的梳理。 儘管前後端的分離已經不再新穎,但仍然有很大一部分企業由於歷史的原因,採用的是“傳統”的Web開發模式,即前端人員根據U ...
  • 緣起 從事近7年Java開發之後,在2019年這個寒冷的冬天里,我終於迎來了人生中的第一次裁員。 啊,30歲之後的裁員真讓人焦慮。 按照以往慣例,在面試心儀的公司之前,需要先面試一些不那麼心儀的公司熱身,順便收穫一些offer減緩焦慮。 於是在經歷兩周的全方面立體化飽和式打擊,啊不,面試之後。我決心 ...
  • 背景 NPE問題,100%的Java程式員都碰到,並且曾經是心中的痛。 1965年英國TonyHoare引入了Null引用,後續的設計語言包括Java都保持了這種設計。 一個例子 業務模型 Person 有車一族, 有Car欄位, Car 車,每個車都有購買保險, 有Insurance欄位; Ins ...
  • 場景 在IDEA中新建SpringBoot項目後,修改了預設的Maven倉庫和配置文件,然後在啟動項目時提示: Error:java: 讀取\org\assertj\assertj-core\3.11.1\assertj-core-3.11.1.jar時出錯; 博客: https://blog.cs ...
  • #include<stdio.h> #include<stdlib.h> #include<math.h> #include<string.h> int main(void) { int n; printf("請輸入需要輸入的整數的數量:"); scanf("%d", &n); // 確定深度 in ...
  • Redis 的讀寫都是在記憶體中,所以它的性能較高,但在記憶體中的數據會隨著伺服器的重啟而丟失,為了保證數據不丟失,我們需要將記憶體中的數據存儲到磁碟,以便 Redis 重啟時能夠從磁碟中恢複原有的數據,而整個過程就叫做 Redis 持久化。 Redis 持久化也是 Redis 和 Memcached 的 ...
  • 發現問題 破解MyEclipse運行.cracker無法運行,切換java_home的配置路徑,運行Java version查看版本號,jdk版本始終都是jdk 10.0 問題根源 Java version命令運行的是java.exe,我們打開環境變數中的path 打開path的第一條目錄,發現裡面 ...
  • 背景 NPE問題,100%的Java程式員都碰到,並且曾經是心中的痛。 1965年英國TonyHoare引入了Null引用,後續的設計語言包括Java都保持了這種設計。 一個例子 業務模型 Person 有車一族, 有Car欄位, Car 車,每個車都有購買保險, 有Insurance欄位; Ins ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...