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" />
                    
Directory.Packages.props
<PackageReference Include="Crping.Spider.PW" />
                    
Project file
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
                    
#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
                    
Install as a Cake Addin
#tool nuget:?package=Crping.Spider.PW&version=1.4.0
                    
Install as a Cake Tool

Crping.Spider.PW

基于 Playwright 的网络爬虫工具抽象类

功能特性

  • iframe 支持:提供丰富的 iframe 操作扩展方法
  • 翻页功能:支持多种翻页模式(页码、偏移量、游标)
  • 详情页处理:支持 MainPage 和 DetailPage 分离
  • 响应拦截:自动捕获页面响应数据
  • 任务队列:基于 Channel 的异步任务处理
  • 持久化上下文:支持用户数据目录,自动保存登录状态

版本更新说明


1.4.0

2026年8月27日 星期四
  • 破坏性变更:重命名EnqueueTaskAsyncEnqueueTaskItemAsync,参数options改为itemProcessTaskItemAsync参数统一为item,与消费端命名对齐
  • 破坏性变更:重命名CacheTaskCacheTaskItemTryGetCachedTaskTryGetCachedTaskItem,参数统一为item
  • 新增:启用GenerateDocumentationFile,为 NuGet 包生成 XML 文档注释(IDE 智能提示)

1.3.0

2026年8月27日 星期四
  • 新增 iframe 支持:在 SpiderUtils 中添加 iframe 相关扩展方法
    • GetAllFrames(): 获取所有 iframe
    • GetFrameByName(): 根据名称获取 iframe
    • GetFrameByUrl(): 根据 URL 匹配获取 iframe
    • GetFrameBySelectorAsync(): 根据 CSS 选择器获取 iframe
    • WaitForFrameAsync(): 等待 iframe 加载完成
    • EvaluateInFrameAsync(): 在 iframe 中执行 JavaScript
    • WaitForSelectorInFrameAsync(): 在 iframe 中等待选择器出现
  • 新增翻页功能:添加 PaginationBase 基类及多种翻页实现
    • PageNumberPagination: 基于页码的翻页
    • OffsetPagination: 基于偏移量的翻页
    • CursorPagination: 基于游标的翻页
    • 支持普通页面和 iframe 中的翻页
  • 新增示例:在 Examples/ 下添加 iframe 翻页与 iframe 内容爬取示例(IframePaginationSpiderIframeContentSpider
  • 调整 PlaywrightManager:默认窗口宽度范围由 1200~1920 调整为 1680~1920,避免过窄窗口导致部分站点布局异常

1.2.0

2026年8月15日 星期五
  • 新增 iframe 支持:在 SpiderUtils 中添加 iframe 相关扩展方法
    • GetAllFrames(): 获取所有 iframe
    • GetFrameByName(): 根据名称获取 iframe
    • GetFrameByUrl(): 根据 URL 匹配获取 iframe
    • GetFrameBySelectorAsync(): 根据 CSS 选择器获取 iframe
    • WaitForFrameAsync(): 等待 iframe 加载完成
    • EvaluateInFrameAsync(): 在 iframe 中执行 JavaScript
    • WaitForSelectorInFrameAsync(): 在 iframe 中等待选择器出现
  • 新增翻页功能:添加 PaginationBase 基类及多种翻页实现
    • PageNumberPagination: 基于页码的翻页
    • OffsetPagination: 基于偏移量的翻页
    • CursorPagination: 基于游标的翻页
    • 支持普通页面和 iframe 中的翻页

1.1.0

2026年8月10日 星期一
  • 新增PlaywrightManager.CloseOldTabsAsync方法,关闭浏览器启动时自动恢复的旧标签页,keepPage参数可指定保留的页面(通常为MainPage
  • SpiderBaseForPW.InitAsync在创建MainPage后自动关闭旧标签页,确保从干净状态开始
  • 修复:headful 模式下关闭上下文中最后一个标签页会导致窗口关闭、浏览器进程退出,之后NewPageAsyncProtocol error (Target.createTarget)错误

1.0.0

2026年8月3日 星期一
  • 破坏性变更:将ILogger替换为ITaskLogger,解决与微软同名接口冲突问题,简化日志方法签名(移除taskCode参数)
  • 破坏性变更:重命名FirstPageMainPage,语义更清晰(主页面)
  • 破坏性变更:重命名FirstPageChannelTaskChannelProcessFirstPageItemAsyncProcessTaskItemAsyncProcessFirstPageChannelAsyncProcessTaskChannelAsyncWriteFirstPageChannelAsyncEnqueueTaskAsyncInitFirstPageChannelInitTaskChannel
  • 破坏性变更:重命名FirstPageResponseMainPageResponseFirstPageResponseHandlerMainPageResponseHandlerOnFirstPageResponseAsyncOnMainPageResponseAsync
  • 破坏性变更:重命名属性DefaultUrlInitUrl,语义更贴合初始化流程
  • 破坏性变更:移除属性Sp,改为局部变量传参,修复线程安全问题
  • 破坏性变更:重命名属性RawSpRootServices,命名更清晰
  • 破坏性变更:重命名属性FirstPageDictTaskCache,重命名方法AddToFirstPageDictCacheTaskTryGetFromFirstPageDictTryGetCachedTask
  • 破坏性变更CountdownEvent改为SemaphoreSlim实现,新增ResetCountdownSignalCountdownCountdownRemaining属性,WaitCountdownAsync改为异步等待不阻塞线程池
  • 新增DetailPage详情页属性,按需懒加载,首次访问时自动创建
  • 新增DetailPageResponse虚方法,可覆盖处理详情页响应
  • 新增OnDetailPageResponseAsync异步扩展点,支持异步处理详情页响应
  • 新增DetailPageResponseHandler安全包装器,自动捕获异常
  • 修复DisposeAsyncTaskChannel可能为null导致的NullReferenceException
  • 修复Log.Critical用于调试信息的问题,改为Log.Information
  • 提取UserAgentDefaultUserAgent常量,避免硬编码
  • PlaywrightManager.InitAsync新增CancellationToken参数
  • PlaywrightManager.Args setter改为init-only
  • 更新UserDataDir属性的XML注释

0.9.0

2026年7月29日 星期二
  • 破坏性变更:重命名类PlaywrightExtPlaywrightManager
  • 破坏性变更:重命名类SpiderOptionsSpiderTaskItemSpiderOptions<TData>SpiderTaskItem<TData>
  • 破坏性变更:重命名属性DefaultURLDefaultUrlKvpsKeyValuesPwExtPwManager
  • 破坏性变更:重命名方法FirstPage_ResponseFirstPageResponseFirstPage_ResponseHandlerFirstPageResponseHandler
  • 破坏性变更:重命名方法CountdownResetResetCountdownCountdownSignalSignalCountdownCountdownWaitAsyncWaitCountdownAsync
  • 破坏性变更:属性Sp的setter由public改为protected
  • 修复ProcessFirstPageChannelAsyncasync void改为async Task
  • 修复任务处理器由new Task改为Task.Factory.StartNew
  • 修复Channel在取消时未正确关闭的问题
  • 新增SpiderBaseForPWIAsyncDisposable实现
  • 新增CountdownWaitAsync方法
  • 新增PlaywrightManager_disposed防重复释放守卫
  • 修复PlaywrightManagerRandom()双实例问题,改用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>
  • 新增属性FirstPageDictCountdown
  • 新增方法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 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.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.4.0 0 8/27/2026
1.3.0 0 8/27/2026
1.1.0 90 8/10/2026
1.0.0 99 8/3/2026
0.8.1 517 12/10/2025
0.8.0 488 12/10/2025
0.7.0 479 12/10/2025
0.6.0 720 12/3/2025
0.5.0 230 11/26/2025
0.4.0 238 11/24/2025
0.3.0 444 11/19/2025
0.2.0 447 11/19/2025
0.1.0 450 11/18/2025