C#网页抓取库
突破基础HTML解析的局限。借助.NET 10的多线程技术,实现自动化网页抓取,大规模提取并导出结构化数据。
- Scrape 使用 CSS 选择器、XPath 和 JavaScript 渲染
- 具有数百个同时请求的多线程
- 支持节流、代理、用户代理和 robots.txt
- 免费试用 30 天,功能齐全,无需信用卡
C# 网页抓取器
using IronWebScraper;
public class Program
{
private static void Main(string[] args)
{
var ScrapeJob = new BlogScraper();
ScrapeJob.Start();
}
}
public class BlogScraper : WebScraper
{
public override void Init()
{
LoggingLevel = LogLevel.All;
Request("https://www.zyte.com/blog/", Parse);
}
public override void Parse(Response response)
{
foreach (HtmlNode title_link in response.Css(".oxy-post-title"))
{
string strTitle = title_link.TextContentClean;
Scrape(new ScrapedData() { { "Title", strTitle } });
}
if (response.CssExists("div.oxy-easy-posts-pages > a[href]"))
{
string next_page = response.Css("div.oxy-easy-posts-pages > a[href]")[0].Attributes["href"];
Request(next_page, Parse);
}
}
}
Imports IronWebScraper
Public Class Program
Private Shared Sub Main(args As String())
Dim ScrapeJob = New BlogScraper()
ScrapeJob.Start()
End Sub
End Class
Public Class BlogScraper
Inherits WebScraper
Public Overrides Sub Init()
LoggingLevel = LogLevel.All
Request("https://www.zyte.com/blog/", AddressOf Parse)
End Sub
Public Overrides Sub Parse(response As Response)
For Each title_link As HtmlNode In response.Css(".oxy-post-title")
Dim strTitle As String = title_link.TextContentClean
Scrape(New ScrapedData() From {{"Title", strTitle}})
Next
If response.CssExists("div.oxy-easy-posts-pages > a[href]") Then
Dim next_page As String = response.Css("div.oxy-easy-posts-pages > a[href]")(0).Attributes("href")
Request(next_page, AddressOf Parse)
End If
End Sub
End Class跨平台支持
为在.NET 10, 9, 8, 7, 6, 5, Core, Standard, or Framework上运行的C#, F#, & VB.NET而设计
为什么选择 IronWebScraper
从单个 C# 类中抓取成千上万的页面。CSS 选择器、XPath、JavaScript 渲染、虚拟身份和礼貌控件在一个库中。
广泛的抓取能力
- using CSS 选择器或 XPath 表达式进行解析;jQuery 风格的语法。
- 渲染 JavaScript 页面,不仅是静态 HTML。
- 输出到 C# 类实例、JSON 或下载文件。
5 分钟内启动
- → 5分钟快速入门。
- 简单API:
Request(url, Parse),response.Css(".selector"),Scrape(data). - 智能默认设置:由框架处理多线程、礼貌性和缓存。
Enterprise绩效
- .NET 10,Core,Standard,或 Framework
- 支持C#,VB.NET,F#。DigiCert签署的二进制文件。
- 部署于任何地方:Windows、Linux、macOS、Docker、Azure、AWS。
礼貌、弹性和审核友好
- 内置的限流、代理支持、用户代理和 robots.txt 合规性。
- 虚拟用户身份:每次请求的用户代理、cookies、登录和 IP。
- 自动保存的作业在出现异常、崩溃或掉电后恢复。
以开发者为先的支持和许可
- 永久许可:一次购买,永久使用。可选更新和续订。
- 24/5 工程师支持(Premium中24/7)。真人,聊天响应中位数<1分钟。
- 30天退款保证不合适?全额退款,无需解释。
为建筑者
- 您将真正使用的功能:
- CSS 选择器 & XPath
- multithreaded crawling
- 代理 & 用户代理轮换
- 虚拟用户身份
- auto-resume on crash
- JavaScript渲染
- 限流 & 礼貌性
- robots.txt 合规
- 动作重放(离线)
- JSON 或类输出
- 适用于任何地方:Windows、Linux、macOS、Docker、Azure、AWS。
购买者
- 被Iron Suite的数百万工程师信赖。
- 为真实工作负载构建:系统迁移、竞争分析、搜索索引、数据挖掘。
- 采购友好:永久许可证,可选续订,可开发票,多种支付选项(包括本地:Amazon Pay,支付宝,Apple Pay,IDEAL,SEPA,ACH)。
- 30 天退款保证。
深受全球 数百万工程师的信赖
入门:C#代码示例
using IronWebScraper;
public class Program
{
private static void Main(string[] args)
{
var ScrapeJob = new BlogScraper();
ScrapeJob.Start();
}
}
public class BlogScraper : WebScraper
{
public override void Init()
{
LoggingLevel = LogLevel.All;
Request("https://www.zyte.com/blog/", Parse);
}
public override void Parse(Response response)
{
foreach (HtmlNode title_link in response.Css(".oxy-post-title"))
{
string strTitle = title_link.TextContentClean;
Scrape(new ScrapedData() { { "Title", strTitle } });
}
if (response.CssExists("div.oxy-easy-posts-pages > a[href]"))
{
string next_page = response.Css("div.oxy-easy-posts-pages > a[href]")[0].Attributes["href"];
Request(next_page, Parse);
}
}
}
Imports IronWebScraper
Public Class Program
Private Shared Sub Main(args As String())
Dim ScrapeJob = New BlogScraper()
ScrapeJob.Start()
End Sub
End Class
Public Class BlogScraper
Inherits WebScraper
Public Overrides Sub Init()
LoggingLevel = LogLevel.All
Request("https://www.zyte.com/blog/", AddressOf Parse)
End Sub
Public Overrides Sub Parse(response As Response)
For Each title_link As HtmlNode In response.Css(".oxy-post-title")
Dim strTitle As String = title_link.TextContentClean
Scrape(New ScrapedData() From {{"Title", strTitle}})
Next
If response.CssExists("div.oxy-easy-posts-pages > a[href]") Then
Dim next_page As String = response.Css("div.oxy-easy-posts-pages > a[href]")(0).Attributes("href")
Request(next_page, AddressOf Parse)
End If
End Sub
End Class
直接来自我们开发团队的人工支持
无论是产品、集成还是授权问题,Iron 产品开发团队随时准备回答您所有问题。立即联系并与 Iron 开始对话,以便在您的项目中充分利用我们的库。强大的抓取引擎掌控在您手中
只需编写一个C#网页抓取器类即可将成千上万甚至百万网页抓取为C#类实例、JSON或下载文件。IronWebScraper允许您编写简洁、线性的工作流程,模拟人类浏览行为。IronWebScraper将作为一群虚拟网络浏览器并行运行您的代码,既有礼貌又具容错性。
简单、灵活的逻辑
必须编程IronWebScraper以了解如何处理它遇到的每种类型的页面。这是通过使用CSS选择器或XPath表达式以非常简洁的方式实现的,并且可以在C#中完全自定义。这种自由让您可以决定在网站上抓取哪些页面,以及对抓取的数据进行什么操作。每种方法都可以在Visual Studio中干净地调试和观看。快速而有礼貌的行为
IronWebScraper处理多线程和网络请求,以便同时处理数百个并发线程,而无需开发人员去管理它们。礼貌可以设置为调节请求,从而减少对目标Web服务器的过度负载的风险。
创建虚拟用户身份
IronWebScraper可以使用一个或多个“身份” - 模拟实际世界中人类请求的会话。每个请求可以通过编程方式或随机分配其自己的身份、用户代理、Cookie、登录甚至IP地址。请求通过URL、解析方法和POST变量的组合设置为自动唯一。动作重放
IronWebScraper使用高级缓存技术,允许开发者在不联机的情况下“现场”更改代码并重放每一个先前的请求。每个抓取作业都会自动保存,并且在出现异常或停电时可以恢复。通过Microsoft Visual Studio快速安装
IronWebScraper通过Visual Studio安装程序迅速将网页抓取工具掌控在您的手中。无论是在Visual Studio中直接通过NuGet安装还是下载DLL,您都可以迅速完成设置。只需一个DLL,没有依赖项。支持:
.NET网页抓取社区教程

VBC#ASP.NET
C#和VB.NET项目中的网页抓取
了解Ahmed如何在他的项目中使用IronWebScraper将内容从一个站点迁移到另一个站点。提供用于抓取电子商务和博客网站的示例项目和代码
我们的客户使用IronWebScraper...
会计和金融系统
- # 收据
- # 报告
- # 发票打印
业务数字化
- # 文档
- # 订购和标签
- # 纸质替代

企业内容管理
- # 内容制作
- # 文档管理
- # 内容分发

数据和报告应用程序
- # 性能跟踪
- # 趋势映射
- # 报告

数千家企业、政府、中小企业和开发者信赖Iron软件产品。
Iron团队在.NET软件组件市场拥有超过10年的经验。








准备开始了吗?
Nuget Downloads 143,929|版本:2026.9刚刚发布








