c# - 无法找出 HtmlAgilityPack 中的 XPath

标签 c# xpath html-agility-pack

我正在努力制作我的第一个 C# 应用程序(它可以做的不仅仅是说“Hello world”),

现在 html 文件有很多标签,(但只有下面给出的两个 h4 标签。) 但这是我感兴趣的部分:

<table width="100%" height="400" border="0" align="center" cellpadding="0" cellspacing="0" bordercolor="#111111" background="images/page_bg.gif" style="BORDER-COLLAPSE: collapse">

<tbody valign="top">
<tr>
<td>

<table width="80%" border="0" valign=top background="images/page_bg.gif">
 <tr>
 <td>

  <div align="center">
   <h4 align="center">
      <font face="Verdana, Arial, Helvetica, sans-serif" size="2">
      <b>
      <font size="4" face="Arial, Helvetica, sans-serif">
      UNWANTED TEXT
       </font></b></font></h4>

  <p><br />
  Name  :  {NAME HERE} <br>Number : {NUMBERS HERE}<br>Number2 : {NUMBERS2}<br><br><h4>UNWANTED TEXT</h4><br>detail NO.  :  <span class=style7>{NUmbers3}</span><br><br><a href=http://test.xom>UNWANTED TEXT</a><br><br>                    
  </p>
  <p class="content"><em><strong>
  <p>&nbsp;</p>

我希望得到 NAME,Numbers1,Numbers2,Numbers3,所以,我想我必须做这样的事情 =

 //div[@align = "centre"]/h4/followingsibling::Text();

但它肯定是不完整的,关于我应该怎么做的任何想法,我从 firebug 得到了 Xpath: /html/body/table/tbody/tr[2]/td/table/tbody/tr/td/table/tbody/tr[2]/td/div/table/tbody/tr/td/table/tbody/tr/td/div/h4

我也尝试过(先获取原始数据然后进一步修剪)

 HtmlNodeCollection node = doc.DocumentNode.SelectNodes("//table[@height='400']//div[@align='centre']"//p);
            foreach(HtmlNode node1 in node)    
                textBox1.Text += node1.InnerText;

但是这里的Node传为NULL 非常感谢任何帮助。

最佳答案

Firefox 将 tbody 标签添加到表格中(在原始 html 中,此标签可以不存在)。所以,我建议不要写所有路径,找到最有特色的路径并使用//。 例如//div[@class='data']/table//tr/td

关于c# - 无法找出 HtmlAgilityPack 中的 XPath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6185709/

相关文章:

python - Selenium 蟒 : find_element_by_css_selector() using :contains()

java - XPath 从多个节点获取文本

C#从网站的html源代码中计算div中的段落

c# - 从特定的起始位置获取选项?

c# - 使用 Linq-To-Xml 时处理空引用

c# - WPF DataGrid - 数据绑定(bind)到 CellTemplates DataTemplate 中的 DataTable 单元格

php - 使用 PHP 和 xPath 从 HTML 中提取数据

c# - HtmlAgilityPack HtmlDocument.Load 抛出异常 "object not set to an instance"

c# - 从 C# 中的字符串末尾删除单引号

c# - 调试 LINQ 查询