С помощью HtmlAgilityPack убедитесь, что элемент на веб-странице существует

c# dom html-agility-pack

Вопрос

Предположим, что я на 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;
}

Который должен вернуть сообщение «это там», потому что он есть. Но это не так. Что я делаю не так?

Принятый ответ

Метод 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);


Related

Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow