# WebPull **Repository Path**: xieliuhuiying/WebPull ## Basic Information - **Project Name**: WebPull - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-07-09 - **Last Updated**: 2026-07-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # WebPull Website 静态页面抓取与生成工具 | Website Static Page Crawling and Generation Tool ## 项目简介 WebPull 是一个基于 .NET 的网站静态页面抓取工具,能够递归爬取指定网站并生成完整的静态本地副本。它类似于 wget 或 HTTrack,但使用 C# 开发,支持自定义爬取深度、请求延迟等功能。 ## 功能特性 - **递归爬取**:支持自定义爬取深度,自动抓取页面链接 - **资源下载**:自动下载 CSS、JavaScript、图片等资源文件 - **链接重写**:自动将页面中的链接转换为本地路径 - **CSS 处理**:支持重写 CSS 文件中的资源引用路径 - **索引生成**:自动生成网站索引页面,方便浏览 - **IIS 兼容**:支持 IIS 路径格式规范化 - **进度回调**:支持实时进度回调,便于显示爬取状态 ## 核心组件 ### WebCrawler 网站爬取核心类,主要功能: - 递归爬取网页内容 - 提取页面链接和资源链接 - 下载各类资源文件 - 可配置最大爬取深度和请求延迟 ### StaticPageGenerator 静态页面生成器,主要功能: - 将爬取的内容生成本地静态文件 - 重写 HTML 中的链接为本地路径 - 处理 CSS 文件中的 URL 引用 - 生成网站索引页面 ## 使用方法 ### 基本用法 ```csharp using WebPull; // 创建爬虫实例 var crawler = new WebCrawler( baseUrl: "https://example.com", maxDepth: 3, // 最大爬取深度 delayMs: 200, // 请求间隔(毫秒) outputDir: "./output" ); // 开始爬取 var pages = await crawler.CrawlAsync(progress => { Console.WriteLine(progress); }); // 生成静态页面 StaticPageGenerator.Generate( pages: pages, outputDir: "./output", baseUrl: "https://example.com", onProgress: progress => { Console.WriteLine(progress); } ); ``` ### PageResult 数据结构 ```csharp public class PageResult { public string Url { get; set; } // 页面 URL public string ContentType { get; set; } // 内容类型 public byte[] Content { get; set; } // 页面内容 public bool IsHtml { get; set; } // 是否为 HTML public int StatusCode { get; set; } // HTTP 状态码 } ``` ## 安装与构建 ### 环境要求 - .NET 6.0 或更高版本 ### 构建步骤 ```bash # 克隆项目 git clone https://gitee.com/xieliuhuiying/WebPull.git # 进入项目目录 cd WebPull # 还原依赖 dotnet restore # 构建项目 dotnet build # 发布 dotnet publish -c Release ``` ## 配置说明 ### WebCrawler 参数 | 参数 | 类型 | 说明 | |------|------|------| | baseUrl | string | 目标网站基础 URL | | maxDepth | int | 最大爬取深度,默认 10 | | delayMs | int | 请求间隔时间(毫秒),默认 200 | | outputDir | string | 输出目录路径 | ### StaticPageGenerator 参数 | 参数 | 类型 | 说明 | |------|------|------| | pages | List | 爬取结果列表 | | outputDir | string | 输出目录路径 | | baseUrl | string | 基础 URL | | onProgress | Action? | 进度回调函数 | ## 注意事项 1. 请遵守目标网站的 robots.txt 规则 2. 合理设置请求延迟,避免对目标网站造成压力 3. 大型网站建议分批爬取,避免内存占用过高 4. 某些动态加载的内容可能无法完整抓取 ## 许可证 本项目仅供学习交流使用,请勿用于非法用途。 ## 联系方式 如有问题,请提交 Issue 或 Pull Request。