C#查找标签之间的所有内容并将其排序为字符串

时间:2016-02-02 10:22:54

标签: c# html regex string sorting

我正在制作一个程序,将网站上的大桌子分类为更易于管理和可自定义的显示。

类表示内容是什么tt = text nn = number。以下是其中一个标签的示例。除了标签之间的值之外,所有这些都完全相同。

<TR class=r2>
    <TD class=tt headers=0>SOME_Text_here_ending_in_Vi.SG2</TD>
    <TD class=nn headers=1>0</TD>
    <TD class=nn headers=2>0</TD>
    <TD class=nn headers=3>0</TD>
    <TD class=nn headers=4>0</TD>
    <TD class=nn style="COLOR: ; BACKGROUND-COLOR: #00cc00" 
    headers=5>00:00:00</TD>
    <TD class=nn style="COLOR: ; BACKGROUND-COLOR: #00cc00" 
    headers=6>00:00:00</TD>
    <TD class=nn headers=7>7</TD>
    <TD class=nn headers=8>13</TD>
</TR>

页面上有大约300个。我设法通过使用RegEx <TD>得到每个<TR>的第一个(?-imsx:" + system + "_*(.?)*_Vi) - 系统就是我按它排序的。但是,我仍然需要<TR>标记中的其他信息,因为它与搜索相关。

我的目标是在ListBox中创建一个较小的表,其中显示的排序结果基于我在&#34; system&#34;中提交的内容。变量

扫描页面的整个源HTML的最佳方法是什么,然后按照我希望的标签对它进行选择。从我在这里发现的到目前为止,似乎RegEx不能用于解析我想要的HTML,那么还有什么方法可以实现呢?

2 个答案:

答案 0 :(得分:1)

HtmlAgilityPack是一个完美的工具。将HTML放在字符串中,就像这样加载它:

        HtmlDocument doc = new HtmlDocument();
        doc.LoadHtml(htmlCode);

然后你就拥有像XPath这样的强大功能,可以帮助你完成任务。

所以,假设您希望在文档中包含所有TR,然后您想对他们的TD孩子做些什么:

        HtmlNode docNode = doc.DocumentNode;
        HtmlNodeCollection trNodes = docNode.SelectNodes("//tr"); 

        foreach (HtmlNode trNode in trNodes)
        {
            HtmlNodeCollection tdNodes = trNode.SelectNodes("td"); 
            // Here you have TD elements in a collection and you can process it
        }

答案 1 :(得分:0)

你也可以使用Linq到Xml。没有经过测试,但它确实是这样的:

if (( $(bc <<< "$up > 0.8") ))
then
    echo ...
    ps ...
    mail ...
fi