我解析網頁到Windows Phone 7,我需要知道什麼是更好的方法來做到這一點。最重要的是表現。我在example with imdb that the author uses regex中看到過,但我不確定如果使用Html Agility Pack和Linq,它會不會更好。解析有什麼更好的:正則表達式或linq?
P.s .:我必須解析網站,它不是我的網站。
我解析網頁到Windows Phone 7,我需要知道什麼是更好的方法來做到這一點。最重要的是表現。我在example with imdb that the author uses regex中看到過,但我不確定如果使用Html Agility Pack和Linq,它會不會更好。解析有什麼更好的:正則表達式或linq?
P.s .:我必須解析網站,它不是我的網站。
使用Html Agility Pack和Linq,您將得到最好的服務。
一次偶然的機會,我在一個類似的問題展開工作。我沒有告訴你任何權威性的聲明,因爲它爲時尚早。首先我用了3個引擎:
當然,也有很多更多的選擇(即使我寫了一次簡單的HTML瀏覽器爲Palm OS ),但這似乎是一個好的開始。
Majestic沒有提供Html->文本轉換,只是一個示例代碼如何遍歷html字符串。首先我實現了瑣碎的轉換:
然後我收集了50個HTML文件的樣本,並使用所有3種方法轉換它們。我不得不說,我對任何一種方法都不滿意。兩個一般觀察:從莊嚴和敏捷
所以我查看了正則表達式代碼,並在底部發現了一個無意義的循環。簡單優化後,Regex方法只有〜25%的速度慢。鑑於它使30多個複雜的正則表達式替代品,我認爲這是一個很好的結果。
然後我寫了一個測試html文件,其中包含所有常見的html標籤和更多。與之前一樣,Majestic和Agility也表現相似。
還有很多更多的測試。例如編碼。
在這一刻,我只會說,正則表達式似乎是一個更好的選擇。但是,所提及的這些發動機都沒有令人滿意的性能。在積極的方面,調整這些引擎(特別是Majestic和Regex)很容易。也許Agility也是如此,但是,我沒有深入探討這個包。
跟進:我決定正則表達式。主要的觀點是它只是一小段代碼,很容易添加到另一個項目中。只是在上面的參考文獻中對原始代碼提出警告。這是緩慢的錯誤,即你需要改進正則表達式使用。 –
[RegEx match open tags not except XHTML self-contained tags]可能重複(http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags) –