Crping.Spider.PW
1.4.0
dotnet add package Crping.Spider.PW --version 1.4.0
NuGet\Install-Package Crping.Spider.PW -Version 1.4.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Crping.Spider.PW" Version="1.4.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Crping.Spider.PW" Version="1.4.0" />
<PackageReference Include="Crping.Spider.PW" />
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Crping.Spider.PW --version 1.4.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Crping.Spider.PW, 1.4.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Crping.Spider.PW@1.4.0
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Crping.Spider.PW&version=1.4.0
#tool nuget:?package=Crping.Spider.PW&version=1.4.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
Crping.Spider.PW
基于 Playwright 的网络爬虫工具抽象类
功能特性
- iframe 支持:提供丰富的 iframe 操作扩展方法
- 翻页功能:支持多种翻页模式(页码、偏移量、游标)
- 详情页处理:支持 MainPage 和 DetailPage 分离
- 响应拦截:自动捕获页面响应数据
- 任务队列:基于 Channel 的异步任务处理
- 持久化上下文:支持用户数据目录,自动保存登录状态
版本更新说明
1.4.0
2026年8月27日 星期四
- 破坏性变更:重命名
EnqueueTaskAsync为EnqueueTaskItemAsync,参数options改为item;ProcessTaskItemAsync参数统一为item,与消费端命名对齐 - 破坏性变更:重命名
CacheTask为CacheTaskItem、TryGetCachedTask为TryGetCachedTaskItem,参数统一为item - 新增:启用
GenerateDocumentationFile,为 NuGet 包生成 XML 文档注释(IDE 智能提示)
1.3.0
2026年8月27日 星期四
- 新增 iframe 支持:在
SpiderUtils中添加 iframe 相关扩展方法GetAllFrames(): 获取所有 iframeGetFrameByName(): 根据名称获取 iframeGetFrameByUrl(): 根据 URL 匹配获取 iframeGetFrameBySelectorAsync(): 根据 CSS 选择器获取 iframeWaitForFrameAsync(): 等待 iframe 加载完成EvaluateInFrameAsync(): 在 iframe 中执行 JavaScriptWaitForSelectorInFrameAsync(): 在 iframe 中等待选择器出现
- 新增翻页功能:添加
PaginationBase基类及多种翻页实现PageNumberPagination: 基于页码的翻页OffsetPagination: 基于偏移量的翻页CursorPagination: 基于游标的翻页- 支持普通页面和 iframe 中的翻页
- 新增示例:在
Examples/下添加 iframe 翻页与 iframe 内容爬取示例(IframePaginationSpider、IframeContentSpider) - 调整
PlaywrightManager:默认窗口宽度范围由1200~1920调整为1680~1920,避免过窄窗口导致部分站点布局异常
1.2.0
2026年8月15日 星期五
- 新增 iframe 支持:在
SpiderUtils中添加 iframe 相关扩展方法GetAllFrames(): 获取所有 iframeGetFrameByName(): 根据名称获取 iframeGetFrameByUrl(): 根据 URL 匹配获取 iframeGetFrameBySelectorAsync(): 根据 CSS 选择器获取 iframeWaitForFrameAsync(): 等待 iframe 加载完成EvaluateInFrameAsync(): 在 iframe 中执行 JavaScriptWaitForSelectorInFrameAsync(): 在 iframe 中等待选择器出现
- 新增翻页功能:添加
PaginationBase基类及多种翻页实现PageNumberPagination: 基于页码的翻页OffsetPagination: 基于偏移量的翻页CursorPagination: 基于游标的翻页- 支持普通页面和 iframe 中的翻页
1.1.0
2026年8月10日 星期一
- 新增
PlaywrightManager.CloseOldTabsAsync方法,关闭浏览器启动时自动恢复的旧标签页,keepPage参数可指定保留的页面(通常为MainPage) SpiderBaseForPW.InitAsync在创建MainPage后自动关闭旧标签页,确保从干净状态开始- 修复:headful 模式下关闭上下文中最后一个标签页会导致窗口关闭、浏览器进程退出,之后
NewPageAsync报Protocol error (Target.createTarget)错误
1.0.0
2026年8月3日 星期一
- 破坏性变更:将
ILogger替换为ITaskLogger,解决与微软同名接口冲突问题,简化日志方法签名(移除taskCode参数) - 破坏性变更:重命名
FirstPage为MainPage,语义更清晰(主页面) - 破坏性变更:重命名
FirstPageChannel为TaskChannel,ProcessFirstPageItemAsync为ProcessTaskItemAsync,ProcessFirstPageChannelAsync为ProcessTaskChannelAsync,WriteFirstPageChannelAsync为EnqueueTaskAsync,InitFirstPageChannel为InitTaskChannel - 破坏性变更:重命名
FirstPageResponse为MainPageResponse,FirstPageResponseHandler为MainPageResponseHandler,OnFirstPageResponseAsync为OnMainPageResponseAsync - 破坏性变更:重命名属性
DefaultUrl为InitUrl,语义更贴合初始化流程 - 破坏性变更:移除属性
Sp,改为局部变量传参,修复线程安全问题 - 破坏性变更:重命名属性
RawSp为RootServices,命名更清晰 - 破坏性变更:重命名属性
FirstPageDict为TaskCache,重命名方法AddToFirstPageDict为CacheTask,TryGetFromFirstPageDict为TryGetCachedTask - 破坏性变更:
CountdownEvent改为SemaphoreSlim实现,新增ResetCountdown、SignalCountdown、CountdownRemaining属性,WaitCountdownAsync改为异步等待不阻塞线程池 - 新增
DetailPage详情页属性,按需懒加载,首次访问时自动创建 - 新增
DetailPageResponse虚方法,可覆盖处理详情页响应 - 新增
OnDetailPageResponseAsync异步扩展点,支持异步处理详情页响应 - 新增
DetailPageResponseHandler安全包装器,自动捕获异常 - 修复
DisposeAsync中TaskChannel可能为null导致的NullReferenceException - 修复
Log.Critical用于调试信息的问题,改为Log.Information - 提取
UserAgent为DefaultUserAgent常量,避免硬编码 PlaywrightManager.InitAsync新增CancellationToken参数PlaywrightManager.Argssetter改为init-only- 更新
UserDataDir属性的XML注释
0.9.0
2026年7月29日 星期二
- 破坏性变更:重命名类
PlaywrightExt为PlaywrightManager - 破坏性变更:重命名类
SpiderOptions为SpiderTaskItem,SpiderOptions<TData>为SpiderTaskItem<TData> - 破坏性变更:重命名属性
DefaultURL为DefaultUrl,Kvps为KeyValues,PwExt为PwManager - 破坏性变更:重命名方法
FirstPage_Response为FirstPageResponse,FirstPage_ResponseHandler为FirstPageResponseHandler - 破坏性变更:重命名方法
CountdownReset为ResetCountdown,CountdownSignal为SignalCountdown,CountdownWaitAsync为WaitCountdownAsync - 破坏性变更:属性
Sp的setter由public改为protected - 修复
ProcessFirstPageChannelAsync由async void改为async Task - 修复任务处理器由
new Task改为Task.Factory.StartNew - 修复Channel在取消时未正确关闭的问题
- 新增
SpiderBaseForPW的IAsyncDisposable实现 - 新增
CountdownWaitAsync方法 - 新增
PlaywrightManager的_disposed防重复释放守卫 - 修复
PlaywrightManager中Random()双实例问题,改用Random.Shared - 修复
ViewportSize与窗口大小不一致的问题 - 将using语句集中到
Usings.cs
0.8.1
2025年12月10日 星期三
- 新增指定默认泛型类型的抽象类
SpiderBaseForPW
0.8.0
2025年12月10日 星期三
- 新增类
SpiderOptions - 修改方法
StartAsync参数为可空类型
0.7.0
2025年12月10日 星期三
- 新增类
SpiderOptions<TData> - 新增属性
FirstPageDict,Countdown - 新增方法
AddToFirstPageDict,TryGetFromFirstPageDict - 修改所有与
FirstPageChannel相关代码 - 修改方法
StartAsync (SpiderOptions<TOptionData> options)
0.6.0
2025年12月3日 星期三
- 新增属性
Args,Context - 新增方法
AddArgs - 添加浏览器启动参数配置
0.5.0
2025年11月26日 星期三
- 新增对数据通道数据量的展示
0.4.0
2025年11月24日 星期一
- 新增属性
RawSp,并修改所有相关代码 - 方法
InitAsync新增参数log,并修改所有异步初始化相关代码 - 方法
ProcessFirstPageChannelAsync服务提供者添加范围
0.3.0
2025年11月19日 星期三
-优化并重命名方法ScrollToBottomAsync()
0.2.0
2025年11月19日 星期三
- 新增方法
ScrollToBottom() - 新增接口
INextPage,ISave
0.1.0
2025年11月18日 星期二
- 实现
PlaywrightExt,SpiderBaseForPW
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
net10.0
- Crping.TaskManager.Abstractions (>= 3.0.0)
- Microsoft.Playwright (>= 1.62.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.