1

私がhttp://google.comにいるとしましょう。ページに要素が存在することを確認したいとしid="hplogo"ます (それは Google ロゴです)。

HtmlAgilityPack を使用したいので、次のように記述します。

    HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
    doc.LoadHtml("http://google.com");
    var foo = (from bar in doc.DocumentNode.DescendantNodes()
               where bar.GetAttributeValue("id", null) == "hplogo"
               select bar).FirstOrDefault();
    if (foo == null)
    {
        HasSucceeded = 1;
        MessageBox.Show("not there");
    }
    else
    {
        MessageBox.Show("it's there");
    }
    return HasSucceeded;
}

そこにあるため、「そこにあります」というメッセージを返す必要があります。しかし、そうではありません。私は何を間違っていますか?

4

1 に答える 1

3

メソッドLoadHtml(html)は、解析用の html コンテンツを含む文字列を読み込みます。これはロードするリソースの URL ではありません。したがって、文字列"http://google.com"を読み込んで、その中にロゴを見つけようとしています。もちろん、そこにない結果が得られます。

WebClientリソース コンテンツのダウンロードに使用できます。

WebClient client = new WebClient();
string html = client.DownloadString("http://google.com");
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(html);
于 2013-07-24T20:35:41.110 に答える