获取表格内的文字

时间:2012-07-10 05:58:06

标签: c# asp.net html-parsing html-agility-pack

我有一张这样的桌子。我想从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 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分: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;

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

将一些属性插入字体元素,例如company =“FOO”

然后使用jquery来获取该元素,如

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

喜欢this

欢呼声