我正在制作一个程序,将网站上的大桌子分类为更易于管理和可自定义的显示。
类表示内容是什么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,那么还有什么方法可以实现呢?
答案 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