Linq解析html字符串

时间:2012-09-05 07:56:21

标签: c# html linq parsing

我想解析一个html页面并从中获取一个特定的值。如何在C#中使用Linq或字符串解析来完成此操作?

-------------更多HTML ----------

     <span class="date">
        04.09.2012
    </span>
    <table cellspacing="0"><tr><th scope="row">1 EUR</th><td><span>**4,4907**</span></td><td><span class="rise">+0,0009</span></td><td><span class="rise">+0,02%</span></td></tr><tr><th scope="row">1 USD</th><td><span>3,5635</span></td><td><span class="fall">-0,0093</span></td><td><span class="fall">-0,26%</span></td></tr></table>

-------------更多HTML ----------

我有兴趣以粗体显示值4,4907!

知道如何实现这个目标吗?

谢谢!

3 个答案:

答案 0 :(得分:4)

如果您只需要该位,请使用正则表达式。 (But don't use a regular expression to parse more complex HTML.

<td><span>4,4907</span></td>
通过正则表达式

可以最方便地匹配

<td><span>([0-9,]+)</span></td> 

例如,请参阅this quickly Googled page,了解如何在C#中使用regexps。

答案 1 :(得分:1)

尝试解析HTML时要小心。

我认为显而易见的方法是将其加载到XDocument(作为XML)中,但由于HTML通常含糊不清或包含语法错误,因此必然会失败。

这里的堆栈溢出的人反而建议使用http://htmlagilitypack.codeplex.com/,据说它可以很好地解析html。然后,您可以使用xpath查询文档中的各种内容。

答案 2 :(得分:0)

你可以用这种方式在C#中试用正则表达式:

http://www.c-sharpcorner.com/UploadFile/prasad_1/RegExpPSD12062005021717AM/RegExpPSD.aspx

查找“&lt; span&gt; * ”和“ *&lt; / span&gt;”之间的字符串。

或者您可以使用像“jericho”这样的HTML解析器,并浏览HTML标记以达到您的价值。