Я сделал 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
непроверенной
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
}
}
}
}