#c# #xpath #screen-scraping #html-parsing #html-agility-pack
#c# #xpath #очистка экрана #html-синтаксический анализ #html-agility-pack
Вопрос:
Я понял это! Я оставлю это опубликованным на случай, если у какого-нибудь другого новичка, такого как я, возникнет такой же вопрос.
Ответ: **("./td[2]/span[@class='smallfont']")**
*
Я новичок в xpath и html agility. Я так близко, но все же так далеко.
ЦЕЛЬ: завершить работу в 4:30 утра
используя следующее с пакетом htmlagility:
foreach (HtmlNode table in doc.DocumentNode.SelectNodes("//table[@id='weekdays']/tr[2]")){
string time = table.SelectSingleNode("./td[2]").InnerText;
Я довожу это до » r n t r n t t4:30am r n t t r n t» когда я пытаюсь что-либо сделать с span, я получаю исключения xpath. Что я должен добавить к («./td[2]»), чтобы в итоге получилось 4:30 утра?
HTML
<td class="alt1 espace" nowrap="nowrap" style="text-align: center;">
<span class="smallfont">4:30am</span>
</td>
Комментарии:
1. Вы можете ответить на свой собственный вопрос. Выполнение этого в том же вопросе делает его ненастоящим вопросом.
Ответ №1:
Я не знаю, является ли Linq вариантом, но вы могли бы также сделать что-то подобное:
var time = string.Empty;
var html =
"<td class="alt1 espace" nowrap="nowrap" style="text-align: center;"><span class="smallfont">4:30am</span></td>";
var document = new HtmlDocument() { OptionWriteEmptyNodes = true, OptionOutputAsXml = true };
document.LoadHtml(html);
var timeSpan =
document.DocumentNode.Descendants("span").Where(
n => n.Attributes["class"] != null amp;amp; n.Attributes["class"].Value == "smallfont").FirstOrDefault();
if (timeSpan != null)
time = timeSpan.InnerHtml;
Комментарии:
1. это действительно круто. Используете ли вы streamreader для извлечения HTML-кода из URL-адреса? Будучи новичком в программировании, я люблю изучать новые вещи.