给定Web响应,如何提取特定部分以进行进一步处理?

时间:2012-10-02 19:04:31

标签: c# html .net-4.0 html-parsing

我有一些代码可以获得网络响应。如何使用其CSS类(class =" data")获取该响应并搜索表?一旦我有了表,我需要提取某些字段值。例如,在下面的示例标记中,我需要字段#3和字段#5的值,因此" 85"和" 1"分别。

<table width="570" border="0" cellpadding="1" cellspacing="2" class="data">
  <tr>
    <td width="158"><strong>Field #1:</strong></td>
    <td  width="99">1</td>
    <td  width="119"><strong>Field #2:</strong></td>
    <td  width="176">110</td>
  </tr>
  <tr>
    <td width="158"><strong>Field #3:</strong></td>
    <td  width="99">85</td>
    <td  width="119"><strong>Field #4:</strong></td>
    <td  width="176">-259.34</td>
  </tr>
  <tr>
    <td width="158"><strong>Field #5:</strong></td>
    <td  width="99">1</td>
    <td  width="119"><strong>Field #6:</strong></td>
    <td  width="176">110</td>
  </tr>
  <tr>
    <td width="158"><strong>Field #7:</strong></td>
    <td  width="99">12</td>
    <td  width="119"><strong>Field #8:</strong></td>
    <td  width="176">123.23</td>
  </tr>
</table>

2 个答案:

答案 0 :(得分:2)

使用HTML的HTML Agility Packparse。如果你想以最简单的方式做到这一点,那就去抓它的beta(it supports LINQ)。

答案 1 :(得分:0)

正如Randolf所说,使用HTML Agility Pack是一个不错的选择。

但是,如果您可以控制HTML的格式,也可以进行字符串解析以提取您所追求的值。

将整个HTML作为字符串下载并搜索字符串“<table”后跟字符串“class = \”data \“”几乎是微不足道的。然后,您可以通过执行类似的字符串操作轻松提取您所追求的值。

我不是说你应该这样做,因为生成的代码将更难以阅读和维护使用HTML Agility Pack的代码,但它会为你节省外部依赖,你的代码可能会表现得更好。

在我制作的WP7应用程序中,我开始使用HTML Agility Pack来解析一些HTML并提取一些值。这很好用,但速度很慢。切换到字符串解析方案使得我的代码快了许多倍,同时返回完全相同的结果。