1

我有一张这样的桌子。我想从 td 标签之间获取文本 FOO COMPANY。我怎么才能得到它?

<table class="left_company">
    <tr>
        <td style="BORDER-RIGHT: medium none; bordercolor="#FF0000" align="left" width="291" bgcolor="#FF0000">
            <table cellspacing="0" cellpadding="0" width="103%" border="0">
                <tr style="CURSOR: hand" onclick="window.open('http://www.foo.com')">
                    <td class="title_post" title="FOO" valign="center" align="left" colspan="2">
                        <font style="font-weight: 700" face="Tahoma" color="#FFFFFF" size="2">***FOO COMPANY***</font>
                    </td>
                </tr>
            </table>
        </td>
    </tr>
<table>

我正在使用以下代码,但 nS 为空。

doc = hw.Load("http://www.foo.aspx?page=" + j);
foreach (HtmlNode link in doc.DocumentNode.SelectNodes("//table[@class='left_company']"))
{
nS = doc.DocumentNode.SelectNodes("//td[@class='title_post']");
}
4

4 回答 4

1

您调用的页面可能会使用 JavaScript 生成感兴趣的内容。HtmlAgilityPack 不执行 JavaScript,因此无法提取内容。确认这一点的一种方法是尝试在关闭脚本的情况下访问页面,并尝试查看您感兴趣的元素是否仍然存在。

于 2012-07-10T06:03:28.730 回答
1
var text = doc.DocumentNode.Descendants()
                .FirstOrDefault(n => n.Attributes["class"] != null && 
                                n.Attributes["class"].Value == "title_post")
                .Element("font").InnerText;

或者

var text2 = doc.DocumentNode.SelectNodes("//td[@class='title_post']/font")
               .First().InnerText;
于 2012-07-10T06:11:16.163 回答
0

关闭:nS = doc.DocumentNode.SelectNodes("//td[@class='title_post']//text()");

然后您可以打开 nS 节点来检索文本。如果有多个文本节点,则需要遍历它们。

于 2012-07-10T06:05:09.007 回答
0

向字体元素插入一些属性,例如 company="FOO"

然后使用 jquery 来获取该元素

alert($('font[company="FOO"]').html())

这样

干杯

于 2012-07-10T06:06:11.807 回答