Im, пытающийся загрузить страницу, содержит таблицу, подобную этой
<table id="content-table">
<tbody>
<tr>
<th id="name">Name</th>
<th id="link">link</th>
</tr>
<tr class="tt_row">
<td class="ttr_name">
<a title="name_of_the_movie" href="#"><b>name_of_the_movie</b></a>
<br>
<span class="pre">message</span>
</td>
<td class="td_dl">
<a href="download_link"><img alt="Download" src="#"></a>
</td>
</tr>
<tr class="tt_row"> .... </tr>
<tr class="tt_row"> .... </tr>
</tbody>
</table>
Я хочу извлечь имя_of_the_movie из td class = "ttr_name" и загрузить ссылку из td class = "td_dl"
это код, который я использовал для циклического преобразования строк таблицы
HtmlAgilityPack.HtmlDocument hDocument = new HtmlAgilityPack.HtmlDocument();
hDocument.LoadHtml(htmlSource);
HtmlNode table = hDocument.DocumentNode.SelectSingleNode("//table");
foreach (var row in table.SelectNodes("//tr"))
{
HtmlNode nameNode = row.SelectSingleNode("td[0]");
HtmlNode linkNode = row.SelectSingleNode("td[1]");
}
в настоящее время я понятия не имею, как проверить имяNode и linkNode и извлечь данные внутри него
любая помощь будет оценена
С уважением
Я не могу проверить это прямо сейчас, но это должно быть что-то вроде:
string name= namenode.Element("a").Element("b").InnerText;
string url= linknode.Element("a").GetAttributeValue("href","unknown");
public const string UrlExtractor = @"(?: href\s*=)(?:[\s""']*)(?!#|mailto|location.|javascript|.*css|.*this\.)(?<url>.*?)(?:[\s>""'])";
public static Match GetMatchRegEx(string text)
{
return new Regex(UrlExtractor, RegexOptions.IgnoreCase).Match(text);
}
Вот как вы можете извлечь все Href Url. Я использую это регулярное выражение в одном из моих проектов, вы можете изменить его в соответствии с вашими потребностями и переписать его для соответствия названию. Я думаю, удобнее сопоставлять их навалом