2011-05-19 63 views
45

我想解析下面的HTML文件,我想得到key的值。这是在Silverlight for Windows手机上完成的。用c#.net解析HTML

<HTML> 
<link ref="shortcut icon" href="favicon.ico"> 
<BODY> 
<script Language="JavaScript"> 
location.href="login.html?key=UEFu1EIsgGTgAV7guTRhsgrTQU28TImSZkYhPMLj7BChpBkvlCO11aJU2Alj4jc5" 
</script> 
<CENTER><a href="login.html?key=UEFu1EIsgGTgAV7guTRhsgrTQU28TImSZkYhPMLj7BChpBkvlCO11aJU2Alj4jc5">Welcome</a></CENTER></BODY></HTML> 

任何想法是从哪里去的?

谢谢

+1

我刚刚添加了一个问题到[软件推荐](http://softwarerecs.stackexchange.com/)堆栈交换网站为此 - [C#库解析HTML? - Software Recommendations Stack Exchange](http://softwarerecs.stackexchange.com/questions/10773/c-library-for-parsing-html/10774#10774)。 – 2014-08-15 23:30:14

回答

66

给HTMLAgilityPack看看。它是一种相当不错的HTML解析器

http://html-agility-pack.net/?z=codeplex

======

这里有让你开始一些代码(需要错误检查)

HtmlDocument document = new HtmlDocument(); 
string htmlString = "<html>blabla</html>"; 
document.LoadHtml(htmlString); 
HtmlNodeCollection collection = document.DocumentNode.SelectNodes("//a"); 
foreach (HtmlNode link in collection) 
{ 
    string target = link.Attributes["href"].Value; 
} 
+1

+1我之前使用过这个工具,非常棒。 – pixelbobby 2011-05-19 18:32:46

+0

使用敏捷包进行了很多刮擦,并且它晃动。绝对要试试这个。 – Pat 2011-05-19 18:37:32

+1

我不认为你可以使用windows phone的敏捷包。 – Nathan 2011-05-19 19:03:15

0

您可以使用正则表达式( Regex class)。表达式可以是这样的:login.html\?key=[^"]*

+4

我不会晕倒,因为我很好,但RegEx并不是一个可靠的方法来做到这一点,而是现在HTMLAgilityPack几乎是金标准。 – pixelbobby 2011-05-19 18:32:26

+11

-1(不幸的是,我很公平 - 与*很好*无关 - 而且这个信息也会帮助你,不要尝试用RexEx来解析HTML)http://stackoverflow.com/questions/1732348/正则表达式可以工作,但我强烈建议,否则,为未来。除了xhtml自包含标签/ 1732454#1732454 – 2011-05-19 18:33:01

+2

正则表达式可能工作,但我强烈建议,否则,为未来。 – Pat 2011-05-19 18:37:01