2015-04-03 207 views
-1

href's和其他类型的可以嵌入URL的标签。总之,从给定的网页链接获取所有URL's。有很多取得URL's的方法,即正则表达式,HtmlAgilityPack,Dcsoup等......我想知道哪一个最好?内部和外部链接

+2

HTML无法使用正则表达式进行分析。使用HTML解析器,如[HtmlAgilityPack](https://htmlagilitypack.codeplex.com/) – 2015-04-03 10:43:40

+0

不确定是否“不能”是合适的词Panagiotis,但我会同意“不应该”。有很多更好的选项可用,比如你建议使用 – Sparky 2015-04-03 10:43:57

+0

的Regex *可以用来分析HTML,但它就像试图用大锤在墙上钉一个钉子 – Claies 2015-04-03 10:50:16

回答

0

您需要使用类似HtmlAgilityPack的内容来解析HTML文档。您还需要使用XPath轻松解析HTML。

正则表达式也可以使用,但使用XPath更适合这项工作。

+0

你可以给我一些使用HtmlAgilityPack的教程的链接因为我什么都没发现。 – 2015-04-03 11:00:37

+0

XPath的问题在于,HTML文档可能无法正确格式化。这是XPath的要求之一。 – Fka 2015-04-03 11:34:48

+0

@MAdeelKhalid http://www.4guysfromrolla.com/articles/011211-1.aspx – JunaidKirkire 2015-04-03 12:17:29

1

关于HtmlAgilityPack,这里是他们的示例代码示例:

HtmlDocument doc = new HtmlDocument(); 
doc.Load("file.htm"); 
foreach(HtmlNode link in doc.DocumentElement.SelectNodes("//a[@href"]) 
{ 
    HtmlAttribute att = link["href"]; 
    att.Value = FixLink(att); 
} 
doc.Save("file.htm"); 

它吸引有href属性的所有<a>元素。本示例从文件加载文档,但当然可以从字符串加载文档。