webBrowser получает только первый атрибут в элементе (когда все классы имеют одинаковые имена)

0

Я сделал html grabber для webbrowser в С#, но я застрял. Веб-страница выглядит следующим образом:

<tbody class="first class"
  <tc class="second class">
    <td class=" ">abcdefg</td>
    <td class=" ">1233456</td>
    <td class=" ">qwertyo</td>
  </tc>

Я использую этот код, чтобы получить содержимое трех классов внутри "второго класса":

HtmlElementCollection theElementCollection = default(HtmlElementCollection);
        theElementCollection = webBrowser1.Document.GetElementsByTagName("tbody");
        foreach (HtmlElement curElement in theElementCollection)
        {                
            curElement.GetElementsByTagName("tc");
            curElement.GetElementsByTagName("td");                

                label1.Text = curElement.GetAttribute("InnerText");
                return;

        }

Проблема в том, что в этом хранилище содержится ВСЕ 3 содержимого в label1, поэтому он выглядит так:

abcdefg123456qwerto

Поскольку все классы имеют одинаковое имя, я не могу захватить только один контент.

Есть ли способ захватить только первый контент внутри элемента, чтобы он выглядел так?

abcdefg
  • 1
    Вы пробовали curElement.GetElementsByTagName ("td") [0]? Вы должны выполнить цикл foreach для тега <td>.
  • 0
    Когда я вставляю это, это дает мне ошибку «Только 1», присваивание, вызов, инкремент и т. Д., А когда помещается в цикл foreach, он говорит, что идентификатор ожидается, но я не уверен, какой идентификатор.
Показать ещё 1 комментарий
Теги:

1 ответ

2
Лучший ответ

непроверенной

HtmlDocument document = WebBrowser.Document;
if (document != null) {                    
    HtmlElementCollection tableCollection = document.GetElementsByTagName("tbody");
    foreach (HtmlElement table in tableCollection) {
        HtmlElementCollection trColl = table.GetElementsByTagName("tc");
        foreach (HtmlElement row in trColl) {
            tds = row.GetElementsByTagName("td");
            if (tds != null && tds.Count > 1) {

                string neededText = tds[0].InnerText;
                // 1.iteration: neededText == abcdefg
                // 2.iteration: neededText == 123456
                // 3.iteration: neededText == qwertyo

            }
        }
    }
}
  • 0
    он должен работать нормально, но он говорит, что tds не существует в текущем контексте, и когда я объявляю его как int, он ошибается. Каким должен быть тдс?
  • 0
    Также он не понимает WebBrowser.Document.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню