【问题标题】:How to get a table inside a div, searching div by a certain id using htmlagilitypack如何在 div 中获取表格,使用 htmlagilitypack 按某个 id 搜索 div
【发布时间】:2018-09-11 03:01:59
【问题描述】:

有一个html之类的

   <div id="info_tab_members">
        <div id="info_members" class="tabslevel">
            <ul>
                <li><a href="#info_tab_members_past">Past members</a></li>
                <li><a href="#info_tab_members_live">Live musicians</a></li> 
            </ul>

            <div id="info_tab_members_all">
                <div class="ui-tabs-panel">
                <!-- THIS TABLE I WANT -->
                <table class="display tblClass" cellpadding="0" cellspacing="0">....
                  <!-- DATA I WANT -->
                </table>
               </div>
            </div>                              

            <div id="info_tab_members_current">
                <div class="ui-tabs-panel">
                    <table class="display tblClass" cellpadding="0" cellspacing="0">        ...
                     </table>
                 </div>
            </div>      
        </div>
    </div>

如何获取 id 为 info_tab_members_all 的 div 中的表? 需要考虑的是有几个表有一个公共类display tblClass

我试过了:

首先我尝试做

foreach (HtmlNode row in doc.DocumentNode.SelectNodes("table[@class='display tblClass']/tbody/tr"))
{
...
}     

但问题是我从所有具有display tblClass 的表中获取数据 所以我尝试了:

 var tbl = doc.DocumentNode.
                SelectSingleNode("//*[@id='info_tab_members_all']").
                SelectNodes("table[@class='display tblClass']/tbody/tr").
                ToList();

但我得到错误:

“对象引用未设置为对象的实例”

如何使用 div id 指定我想要的表:'info_tab_members_all'

【问题讨论】:

    标签: c# html-table html-agility-pack


    【解决方案1】:

    如果你能够使用HtmlAgilityPack.CssSelectors,那么你很幸运,

    var table = htmlDoc.QuerySelectorAll("#info_tab_members_all table");
    // table is `IList<HtmlNode>`
    

    如果没有,那么您只需要正确的 XPath。这是great reference for converting CSS to XPath,反之亦然。

    var table = htmlDoc.DocumentNode.SelectSingleNode("//*[@id='info_tab_members_all']/*/table")
    // table is `HtmlNode`
    

    【讨论】:

      猜你喜欢
      • 2019-05-11
      • 2016-04-21
      • 2014-02-05
      • 2020-12-19
      • 2017-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多