You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Html Agility Pack读取含动态加载脚本的网页内容?

解决HtmlAgilityPack无法获取动态加载内容的问题

HtmlAgilityPack只能抓取服务器直接返回的静态原始HTML,没法执行页面里的JavaScript,所以那些需要脚本运行后才加载的二级内容(比如站点加载提示消失后才显示的正文),用它直接爬肯定拿不到。

给你两个实用的解决办法:

1. 用带JS引擎的工具模拟浏览器渲染

可以用PuppeteerSharp(.NET版的无头浏览器工具),它能完整模拟浏览器环境,等页面所有动态内容加载完成后再抓取HTML,之后再交给HtmlAgilityPack解析。

步骤:

  • 先通过NuGet安装PuppeteerSharp包
  • 示例代码:
using PuppeteerSharp;
using HtmlAgilityPack;

// 下载Chrome浏览器(首次运行需要)
var browserFetcher = new BrowserFetcher();
await browserFetcher.DownloadAsync();

// 启动无头浏览器
using var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = true });
using var page = await browser.NewPageAsync();

// 打开目标网页
await page.GoToAsync("yoursite.com");
// 等待目标元素加载完成(比如等页面里的p标签出现)
await page.WaitForSelectorAsync("p");

// 获取渲染后的完整HTML
var dynamicHtml = await page.GetContentAsync();

// 用HtmlAgilityPack解析动态HTML
var doc = new HtmlDocument();
doc.LoadHtml(dynamicHtml);
var pTags = doc.DocumentNode.Descendants("p")
               .Select(el => el.InnerText.Trim())
               .Where(u => !string.IsNullOrEmpty(u));

// 后续处理pTags的逻辑
foreach (var pText in pTags)
{
    Console.WriteLine(pText);
}

2. 直接调用动态内容的API接口

打开浏览器开发者工具(F12)的「Network」面板,刷新页面,找到加载二级内容的XHR/Fetch请求,直接复制这个接口地址,用HttpClient调用获取数据,这种方式比模拟浏览器效率高很多。

示例代码:

using System.Net.Http;
using System.Text.Json;

// 定义匹配API返回结构的模型类
public class YourContentModel
{
    // 根据实际API返回的字段定义属性,比如:
    public string[] Paragraphs { get; set; }
}

using var httpClient = new HttpClient();
// 替换为实际的API接口地址
var response = await httpClient.GetAsync("https://yoursite.com/api/get-content");
response.EnsureSuccessStatusCode();

var jsonContent = await response.Content.ReadAsStringAsync();
// 解析JSON数据
var contentData = JsonSerializer.Deserialize<YourContentModel>(jsonContent);

// 处理拿到的数据
if (contentData?.Paragraphs != null)
{
    foreach (var para in contentData.Paragraphs)
    {
        Console.WriteLine(para);
    }
}

内容的提问来源于stack exchange,提问作者Mostafa Miri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 19:37:37