페이지를 다운로드하려고하면 다음과 같은 표가 포함됩니다.
<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>
나는 td class = "ttr_name"에서 name_of_the_movie를 추출하고 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]");
}
현재 나는 nameNode 및 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을 모두 추출하는 방법입니다. 내 프로젝트 중 하나에서 그 정규식을 사용하고 있습니다. 필요에 맞게 정규식을 수정하고 제목과 일치하도록 다시 작성할 수 있습니다. 대량으로 일치시키는 것이 더 편리하다고 생각합니다.