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 ループ内で子を選択しようとすると、実際にはドキュメント ルートから検索されることに気付きました。本当に迷惑な何か。
質問:
SelectNodes
から新しいドキュメント インスタンスを作成せずに、返された各テーブルから値を選択する方法はありますHtmlDocument
か?HtmlDocument
を使用するたびにメモリリークがあることに気付いたので、処分する方法はあり_document.LoadHtml(html)
ますか?