我想解析一个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!
知道如何实现这个目标吗?
谢谢!
答案 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标记以达到您的价值。