[Этот вопрос имеет относительно, который живет по адресу: Selective screen scraping with HTMLAgilityPack and XPath]экран соскоб с htmlAgilityPack и XPath
У меня есть некоторые HTML для синтаксического анализа, который имеет общий вид, как следующие:
...
<tr>
<td><a href="" title="">Text Data here (1)</a></td>
<td>Text Data here(2)</td>
<td>Text Data here(3)</td>
<td>Text Data here(4)</td>
<td>Text Data here(5)</td>
<td>Text Data here(6)</td>
<td><a href="link here {1}" class="image"><img alt="" src="" /></a></td>
</tr>
<tr>
<td><a href="" title="">Text Data here (1)</a></td>
<td>Text Data here(2)</td>
<td>Text Data here(3)</td>
<td>Text Data here(4)</td>
<td>Text Data here(5)</td>
<td>Text Data here(6)</td>
<td><a href="link here {1}" class="image"><img alt="" src="" /></a></td>
</tr>
...
Ищу для способ, где я могу разобрать его вниз в содержательных куски, как это:
(1), (2), (3), (4), (5), (6), {1} CRLF
(1) , (2), (3), (4), (5), (6), {1} CRLF
и так далее
Я попробовал два способа:
путь 1:
var dataList = currentDoc.DocumentNode.Descendants("tr")
.Select
(
tr => tr.Descendants("td").Select(td => td.InnerText).ToList()
).ToList();
который извлекает мне внутренний текст td
с, но не может принести ссылку {1}. Здесь создается список, содержащий множество списков. Я могу управлять им, используя вложенный foreach.
путь 2:
var dataList = currentDoc.DocumentNode
.SelectNodes("//tr//td//text()|//tr//td//a//@href");
, который действительно получает мне ссылку {1} и все данные, но она становится неорганизованным. Здесь все данные присутствуют в большом фрагменте. Поскольку данные в одном tr
относительны, я теперь теряю это отношение.
Итак, как я могу решить эту проблему?
Данные (x) в TD и данные {x} в HREF отличаются друг от друга, поэтому для его получения требуется два кода. Что вам нужно в точности? –