2

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)ますか?

4

1 に答える 1