gpt4 book ai didi

c# - HtmlAgilityPack SelectNodes,处理

转载 作者:太空宇宙 更新时间:2023-11-03 13:46:51 30 4
gpt4 key购买 nike

我正在尝试使用 SelectNodes 使用 HtmlAgilityPack 进行一些屏幕抓取,并从返回的每个节点获取一些值

这是代码

private readonly HtmlDocument _document = new HtmlDocument();

public void ParseValues(string html)
{
_document.LoadHtml(html);
var tables = _document.DocumentNode.SelectNodes("//table");

foreach (var table in tables)
{
_document.LoadHtml(table.OuterHtml);
var value = _document.DocumentNode.SelectSingleNode("//tbody[1]/tr/td[0]");
}
}

但我注意到,当尝试在 foreach 循环内选择子项时,它实际上是从文档根目录搜索的。真的很烦人。

问题:

  1. 有没有一种方法可以从 SelectNodes 返回的每个表中选择值,而不必从 HtmlDocument 创建新的文档实例?

  2. 有没有办法处理 HtmlDocument,因为我注意到每次使用 _document.LoadHtml(html) 时都会发生内存泄漏;

最佳答案

(更详细的解释,见Html Agility Pack - Problem selecting subnode)


不必创建另一个 HtmlDocument 对象,或将另一个 HTML 加载到其中。你只需要做:

foreach (var table in tables)
{
var value = table.SelectSingleNode(".//tbody[1]/tr/td[0]");
}

关键是用.//tbody代替//tbody

关于c# - HtmlAgilityPack SelectNodes,处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15046983/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com