Найти конкретные данные в html с помощью HtmlElement (Collection) и веб-браузера - PullRequest
3 голосов
/ 21 июля 2009

Я хочу найти div с именем класса XYZ, затем в нем я хочу перебрать группу элементов с именем ABC. Затем возьмите ссылки (href) внутри и, возможно, другую информацию.

Как мне найти div с XYZ из webBrowser1.Document.Links и любыми подпунктами, которые я хочу?

1 Ответ

13 голосов
/ 21 июля 2009

Сначала вы сказали, что хотите найти div с именем класса XYZ, так почему вы ищете в webBrowser1.Documnet.Links? Сначала найдите Div, затем перейдите по ссылкам внутри него.

HtmlDocument doc = webBrowser.Document;
HtmlElementCollection col = doc.GetElementsByTagName("div");
foreach (HtmlElement element in col)
{
    string cls = element.GetAttribute("className");
    if (String.IsNullOrEmpty(cls) || !cls.Equals("XYZ"))
        continue;

    HtmlElementCollection childDivs = element.Children.GetElementsByName("ABC");
    foreach (HtmlElement childElement in childDivs)
    {
        //grab links and other stuff same way
    }
}

Также обратите внимание на использование «className» вместо «class», оно даст вам имя соответствующего класса. Использование только «класса» вернет пустую строку. Это задокументировано в MSDN - SetAttribute , но не в GetAttribute . Так что это вызывает небольшое замешательство.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...