搜索「python」和「xml」會返回多種用於組合這兩者的庫。哪個XML庫用於什麼目的?
這份名單可能有問題:
- xml.dom的
- xml.etree
- xml.sax
- xml.parsers.expat
- 的PyXML
- beautifulsoup?
- 的HTMLParser
- htmllib中
- sgmllib中
是很好,如果有人能提供的時候使用它,爲什麼一個簡單的總結。
搜索「python」和「xml」會返回多種用於組合這兩者的庫。哪個XML庫用於什麼目的?
這份名單可能有問題:
是很好,如果有人能提供的時候使用它,爲什麼一個簡單的總結。
DOM/SAX鴻溝是基本的。它不僅適用於python,因爲DOM和SAX是跨語言的。
DOM:將整個文檔讀入內存並對其進行處理。 適合:在標記跨越標記
SAX:解析t他在閱讀時記錄它。適合:
beautifulsoup:
非常適合HTML或不太完善的標記。易於使用和快速。適用於屏幕抓取等。它可以與標記一起使用,其中基於XML的標記僅通過標記不正確的錯誤。
其餘大部分我沒有使用過,但我認爲關於何時使用哪些規則沒有硬性規定。只是你的標準考慮:誰來維護代碼,你覺得哪些API最容易使用,工作效率如何等等。
一般來說,對於基本需求,使用標準庫模塊因爲它們是「標準」的,因此可用且衆所周知。但是,如果您需要深入研究某些內容,幾乎總是會有更新的非標準模塊在標準庫之外提供卓越的功能。
使用這兩種樣式的解析器找到了一篇好文章: http://www.doughellmann.com/PyMOTW/xml/etree/ElementTree/parse.html – 2010-03-16 00:07:49
您的鏈接pymotw有很多很好的示例關於標準api。它實際上被稱爲「本週的python模塊」。 – n611x007 2014-04-23 10:07:40
我對XML沒有太多的瞭解,但是當我需要的時候,lxml一直是一種樂趣,而且顯然非常快。元素樹API在面向對象的設置中非常好用。
我發現xml.etree
基本上足夠了一切,除了BeautifulSoup
如果我需要(從破碎的HTML,這BeautifulSoup也有助於和是無處不不是一個普遍的問題,不同的)解析破 XML:它有合理支持讀取內存中的整個XML文檔,瀏覽它們,創建它們,逐步解析大文檔。 lxml
支持相同的接口,並且速度通常更快 - 當您可以負擔得起安裝第三方Python擴展時(例如在App Engine上,您不能 - 但xml.etree仍然存在,所以您可以準確運行相同的代碼)。 lxml
也有更多的功能,並提供BeautifulSoup。
你提到的其他庫是模仿非常不同的語言設計的API,一般而言,我沒有理由將Python扭曲到這些迴轉中。如果你有非常特殊的需求,例如對xslt的支持,各種驗證等等,那麼可能還有其他庫需要四處尋找,但是我很長一段時間沒有這樣的需求,所以我不是現在的爲他們提供的產品。
對於許多問題,你可以通過XML獲得。它具有作爲標準庫一部分的主要優點。這意味着它幾乎安裝在每個系統上,並且界面將是靜態的。這不是最好的,也不是最快的,但它在那裏。
其他的一切都有lxml。具體來說,lxml最適合解析破碎的HTML,xHTML或可疑提要。它使用libxml2和libxslt來處理XPath,XSLT和EXSLT。教程很明確,界面簡單直觀。提到的其餘庫存在,因爲lxml目前的形式不可用。
這是我的意見。
那次我帶着美麗的湯去了,因爲其他人對於輸入的內容都是迂腐的;我無法控制的東西。 – 2010-03-19 05:20:34
從開發人員的生產力和易用性角度來看,我對'BeautifulSoup'有很棒的經驗。 Anaconda python隨身攜帶。 – arun 2017-10-24 13:37:20