如何选择具有“foo”类的 td?

Posted

技术标签:

【中文标题】如何选择具有“foo”类的 td?【英文标题】:How to select a td that has class "foo"? 【发布时间】:2011-08-23 16:18:54 【问题描述】:

我正在使用 htmlAgilityPack,我想从类 title 的 td 中选择值。我需要Battlefield 3 标签内的值<a>

我尝试了以下方法,只是为了获得正确的 td 元素,但我得到了一个异常 object is not set to an instance

var title = from item in document.DocumentNode.Descendants()
            where item.Name == "td" && item.Attributes["class"].Value == "title"
            select item.InnerHtml;

通过这个小例子,我可能会弄清楚我需要什么。

感谢您的建议。

<tr class="first-in-year">
  <td class="year">2011</td>

  <td class="img"><a href="/battlefield-3/61-27006/"><img src=
  "http://media.giantbomb.com/uploads/6/63038/1700748-bf3_thumb.jpg" ></a></td>

  <td class="title">
    <a href="/battlefield-3/61-27006/">Battlefield 3</a>

    <p class="deck">Battlefield 3 is DICE's next installment in the franchise and
    will be on PC, PS3 and Xbox 360. The game will feature jets, prone, a
    single-player and co-op campaign, and 64-player multiplayer (on PC). It's due out
    in Fall of 2011.</p>
  </td>
</tr>

【问题讨论】:

【参考方案1】:

尝试使用带有类或其他属性说明符的 XPath 选择器。

//td[@class='title']/a

它应该为您提供具有“标题”类的元素中的所有元素。然后,您将遍历该 NodeCollection 并调用 node.InnerText 属性。

  var nodes = doc.DocumentNode.SelectNodes("//td[@class='title']/a");
  foreach(HtmlNode node in nodes)
  
     string title = node.InnerText;
  

W3Schools 的教程/资源非常适合快速提升。

【讨论】:

在标题的末尾,你是遗漏了撇号还是故意的?【参考方案2】:

XPath 应该可以解决问题。这样的事情应该会有所帮助:

var text = document.DocumentNode.SelectNodes("//td[@class='title']/a");

【讨论】:

【参考方案3】:

这对我有用:

string title = doc.DocumentNode.SelectSingleNode(@"//td[@class='title']/a").InnerText;

【讨论】:

以上是关于如何选择具有“foo”类的 td?的主要内容,如果未能解决你的问题,请参考以下文章

使用 JQuery 选择具有特定类的特定行的子项

jQuery 选择具有 A 或 B 或 C 类的元素

我如何获得具有特定类的 td nodeValue?

选择 TD 元素,这些父 TR 中的元素除外

BeautifulSoup4:选择属性不等于 x 的元素

如何在 DIV 中选择具有类的项目?