Как я могу получить весь контент в теге <td>с помощью HTML Agility Pack? - PullRequest
4 голосов
/ 12 июня 2010

Так что я пишу приложение, которое будет немного скрести экран. Я использую HTML Agility Pack для загрузки всей HTML-страницы в экземпляр HtmlDocoument, называемый doc. Теперь я хочу проанализировать этот документ, ища это:

<table border="0" cellspacing="3">
<tr><td>First rows stuff</td></tr>
<tr>
<td> 
The data I want is in here <br /> 
and it's seperated by these annoying <br /> 's.

No id's, classes, or even a single <p> tag. </p> Just a bunch of <br />  tags.
</td> 
</tr> 
</table> 

Так что мне просто нужно получить данные во 2-й строке. Как я могу это сделать? Должен ли я использовать регулярное выражение или что-то еще?

Обновление: Вот как я загружаю свой doc

HtmlWeb hw = new HtmlWeb();
HtmlDocument doc = hw.Load(Url);

Ответы [ 5 ]

3 голосов
/ 12 июня 2010

Поскольку вы используете Html Agility Pack , я уже предложил бы использовать методы, которые он предоставляет, чтобы найти нужную информацию.Есть несколько способов навигации по документу, но один из самых кратких - использовать XPath .В этом случае вы можете использовать что-то вроде этого:

HtmlDocument doc = new HtmlDocument();
doc.Load("input.html");
HtmlNode node = doc.DocumentNode
                   .SelectNodes("//table[@cellspacing='3']/tr[2]/td")
                   .Single();
string text = node.InnerText;
1 голос
/ 12 июня 2010

«Что-то еще» - лучший ответ - HTML лучше разбирать анализатором HTML, а не с помощью регулярных выражений. Я не эксперт по C #, но я слышал, что HTML Agility Pack хорошо подходит для этой цели.

1 голос
/ 12 июня 2010
0 голосов
/ 12 июня 2010

Если вы уже используете пакет Agility, то просто используйте что-то doc.DocumentNode.SelectNodes("//table[@cellspacing='3']") для получения таблицы в документе.Попробуйте просмотреть документацию и примеры кодирования.Поскольку у вас уже есть структурированные данные, очень сложно вернуться к текстовым данным и выполнить повторный анализ.

0 голосов
/ 12 июня 2010

Вероятно, вы получите больший пробег с парсером xml.

...