Ich habe diesen Code verwendet, um die Seiteninformationen zu erhalten. Aber jetzt hat sich die Site geändert und meine Anwendung gibt einen Nullfehler zurück.
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(page);
var query = doc.DocumentNode
.SelectNodes("//table[@class='table table-striped table-hover']/tr")
.Select(r => {
return new DelegationLink()
{
Row = r.SelectSingleNode(".//td").InnerText,
Category = r.SelectSingleNode(".//td[2]").InnerText
};
}).ToList();
und das ist mein html:
<div role="tabpanel" class="tab-pane fade " id="tab3">
<div class="circular-div">
<table class="table table-striped table-hover" id="circular-table">
<thead>
<tr>
<th>ردیÙ</th>
<th>دسته بندی</th>
<th>عنوان</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>بخشنامه‌ها</td>
<td>اطلاعیه جهاد دانشگاهی</td>
</tr>
<tr>
<td>2</td>
<td>بخشنامه‌ها</td>
...
...
...
Wo irre ich mich?
Tabellenzeilen sind keine direkten Nachkommen der Tabelle, aber sie sind in andere Tags geschachtelt, und deshalb hat Ihr Code null zurückgegeben. Sie möchten auch die Kopfzeile überspringen und nur den Körper der Tabelle abkratzen.
var query = doc.DocumentNode
.SelectNodes("//table[@class='table table-striped table-hover']/tbody/tr")
.Select(r =>
{
return new DelegationLink()
{
Row = r.InnerText,
Category = r.SelectSingleNode(".//td[2]").InnerText
};
}
).ToList();