2015-04-03 141 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>元素。本示例從文件加載文檔,但當然可以從字符串加載文檔。