2013-08-04 12 views
0

有時我不確定何時必須使用這個或另一個。我通常用Python解析所有的東西,但我想把這個問題集中在HTML解析上。我應該使用正則表達式還是隻使用DOM /字符串操作?

就我個人而言,當需要解析兩個以上的常規元素(例如,新聞列表的標題和正文)時,我發現DOM操作真的很有用。

但是,我發現自己的情況下,我不明白建立一個正則表達式或試圖獲得所需的值只是簡單地操縱字符串。一個特別的虛構的例子:我得的相冊的照片的總數,和獲得,這是使用這種方式解析的照片數量的唯一途徑:

(190 1)

所以我必須從整個HTML文檔中取得'190'。我可以爲它寫一個正則表達式,雖然解析HTML的正則表達式並不是最好的,或者這是我一直理解的。另一方面,使用DOM對我來說似乎壓倒一切,因爲它只是一個簡單的元素。字符串操作似乎是最好的方式,但我不確定在這種類似的情況下我是否應該這樣做。

你能告訴我你將如何從使用Python(或任何其他語言)的HTML文檔中解析這些單個元素?

回答

4

這是一個主觀問題(帶有主觀答案),但總的來說,我會盡量避免使用正則表達式來解析HTML/XML,因爲在SO中有previously discussed。只有帶標記的輸入字符串很小,沒有可能變得更復雜,並且被搜索的模式是明確的並且容易描述爲正則表達式時,我會使用正則表達式。這是一個平衡工作的正確工具和需要實用的問題。

對於你的具體例子,我認爲可以用正則表達式開始。但是如果你發現自己從輸入中提取額外的信息和/或正則表達式開始變得麻煩,那麼切換到解析器。

2

人們害怕做正則表達式來搜索HTML,因爲它在解析標籤時不是正確的工具。但是,一切都應根據具體情況予以考慮。您不是在搜索標籤,而是在文檔中搜索明確定義的字符串。在我看來,最簡單的解決方案只是一個正則表達式或某種XPath表達式 - 簡單的解析需要簡單的工具。

相關問題