【问题标题】:How to find last column of a table using Html Agility Pack如何使用 Html Agility Pack 查找表格的最后一列
【发布时间】:2021-02-17 08:04:30
【问题描述】:

我有一张这样的桌子:

<table border="0" cellpadding="0" cellspacing="0" id="table2">
    <tr>
        <th>Name
        </th>
        <th>Age
        </th>
    </tr>
    <tr>
        <td>Mario
        </td>
        <th>Age: 78
        </td>
    </tr>
    <tr>
        <td>Jane
        </td>
        <td>Age: 67
        </td>
    </tr>
    <tr>
        <td>James
        </td>
        <th>Age: 92
        </td>
    </tr>
</table>

我想使用 Html Agility Pack 从所有行中获取最后一个 td
到目前为止,这是我的 C# 代码:

await page.GoToAsync(NumOfSaleItems, new NavigationOptions
{
    WaitUntil = new WaitUntilNavigation[] { WaitUntilNavigation.DOMContentLoaded }
});
var html4 = page.GetContentAsync().GetAwaiter().GetResult();
var htmlDoc4 = new HtmlDocument();
htmlDoc4.LoadHtml(html4);
var SelectTable = htmlDoc4.DocumentNode.SelectNodes("/html/body/div[2]/div/div/div/table[2]/tbody/tr/td[1]/div[3]/div[2]/div/table[2]/tbody/tr/td[4]");
if (SelectTable.Count == 0)
{
    continue;
}
else
{
    foreach (HtmlNode row in SelectTable)//
    {
        string value = row.InnerText;
        value = value.ToString();
        var firstSpaceIndex = value.IndexOf(" ");
        var firstString = value.Substring(0, firstSpaceIndex);
        LastSellingDates.Add(firstString);
    }                                            
}

如何只获取表格的最后一列?

【问题讨论】:

    标签: c# web-scraping html-agility-pack


    【解决方案1】:

    我认为你想要的XPath 是://table[@id='table2']//tr/td[last()]

    //table[@id='table2'] 在文档中的任意位置按 ID 查找表。这比从根开始的长而脆弱的路径更可取,因为与 HTML 结构的其余部分相比,表 ID 不太可能更改。

    //tr 获取表中的后代行。我使用了两个斜杠,以防实际 HTML 中可能存在干预 &lt;tbody&gt; 元素。

    /td[last()] 获取每行中的最后一个 &lt;td&gt;

    从那里您只需要选择每个&lt;td&gt;InnerText

    var tds = htmlDoc.DocumentNode.SelectNodes("//table[@id='table2']//tr/td[last()]");
    var values = tds?.Select(td => td.InnerText).ToList() ?? new List<string>();
    

    这里的工作演示:https://dotnetfiddle.net/7I8yk1

    【讨论】:

      猜你喜欢
      • 2020-01-17
      • 1970-01-01
      • 1970-01-01
      • 2012-01-07
      • 1970-01-01
      • 1970-01-01
      • 2011-04-20
      • 2014-10-04
      • 1970-01-01
      相关资源
      最近更新 更多