2011-08-16 48 views
1

我應該使用什麼?XML解析器與正則表達式

我將獲取鏈接,圖像,文本等,並用它來構建seo統計和分析頁面。

你推薦使用什麼? XML解析器或正則表達式

我一直在使用正則表達式,從來沒有任何問題,但是,我一直聽到人們說,它不能做一些事情,等等等等......但說實話,我不'不知道爲什麼,但我害怕使用XML解析器,並喜歡正則表達式(它的工作原理和服務目的相當好)

所以,如果一切正常和正則表達式爲什麼我在這裏問你要使用什麼?那麼,我認爲即使迄今爲止一切正常,並不意味着它將來也會出現,所以我只想知道使用正則表達式的XML解析器有什麼好處?性能有沒有提高,容易出錯,更好的支持,其他閃耀功能等等?

如果建議使用XML解析器然後推薦一個用PHP

使用

我都肯定會想知道爲什麼你會選擇一個比其他?

+2

有[優點和缺點](http://stackoverflow.com/questions/3650125/how-to-parse-html-with-php/3650431#3650431)。爲了從各種網站中提取,使用DOM解析器而不是正則表達式提取最爲簡單(因此更好的選擇)。雖然你沒有非常具體的想要提取什麼。 – mario

回答

2

如果您正在處理真實世界(X)HTML,那麼您將需要HTML解析器而不是XML解析器,因爲XML解析器一旦遇到格式錯誤就需要停止解析,這將是幾乎立即與大多數HTML。

針對處理HTML的正則表達式的一點是它不可靠。對於任何正則表達式,都會有HTML頁面失敗。 HTML解析器與正則表達式一樣易於使用,並且像瀏覽器一樣處理HTML,所以非常可靠,並且很少有任何理由不使用它。

一個可能的例外是抽樣用於統計目的。假設您將掃描100,000個網頁以獲得相當簡單的模式,例如,某個特定屬性的存在,並返回您獲得的匹配網頁的百分比。雖然設計良好的正則表達式可能會產生假陽性和假陰性,但它們不太可能影響總體百分比。您可能能夠接受這些錯誤匹配,因爲正則表達式掃描可能比每個頁面的完整解析更快。然後,您可以通過僅在返回正則表達式匹配的頁面上運行解析來減少誤報數量。

要看到問題的種類,將導致困難的正則表達式看:Can you provide some examples of why it is hard to parse XML and HTML with a regex?

0

這聽起來我好像你正在做的屏幕抓取。這無疑是一個有點啓發式的過程 - 您正在尋找感興趣的網頁中經常出現的模式,您不可避免地會錯過其中的一些模式,而且您並不介意。例如,你並不在意你對img標籤的搜索也會發現一個img標籤,它會被註釋掉。如果這是您的應用程序的特徵,那麼反對使用正則表達式處理HTML或XML的通常規則可能不適用於您的案例。