Napisałem skrypt w języku Python, który przetwarza dużą liczbę pobranych stron HTML (strony 120K). Muszę je przeanalizować i pobrać z nich trochę informacji. Próbowałem używać BeautifulSoup, który jest łatwy i intuicyjny, ale wydaje się działać bardzo powoli. Ponieważ jest to coś, co będzie musiało być rutynowo uruchamiane na słabej maszynie (na Amazon), ważna jest szybkość. czy istnieje parser HTML/XML w python, który będzie działać znacznie szybciej niż BeautifulSoup? lub muszę uciekać się do wyrażeń regularnych parsowania ..Szybki parser HTML Pythona
Odpowiedz
lxml jest szybki XML i HTML parser: http://lxml.de/parsing.html
try: Element może być szybszy, ale nie jestem pewien.
xml.etree.ElementTree import ElementTree
Chciałem to również zasugerować ... chociaż nie mam żadnych danych na poparcie tego stosunku wydajności do BeautifulSoup – inspectorG4dget
SAX stylu parser może być szybsze niż te oparte na DOM. Twój kod otrzymuje strumień elementów i musisz wywnioskować (i potencjalnie przechowywać) swoje relacje; ale musisz tylko zachować tyle stanu, ile jest wymagane do uzyskania żądanych danych. W przeciwieństwie do parserów DOM-style, trzeba zbudować model obiektów nawigacyjnych, który wymaga czasu (i pamięci), których być może nie trzeba wydawać.
Python ma taki parser dla HTML; nazywa się HTMLParser
(html.parser
w Pythonie 3). W zależności od tego, jak trudno jest rozpoznać dane, które chcesz wyodrębnić, może być bardzo trudno skutecznie przeprowadzić takie analizowanie. Gdybyś wysłał przykładowy plik i informację, jakie dane chcesz z niego wyodrębnić, prawdopodobnie mógłbym zabić.
- 1. jak szybki jest plaster Pythona
- 2. Co to jest szybki parser matematyczny C lub Objective-C?
- 3. Jsoup Java parser HTML: Wykonywanie zdarzeń javascript
- 4. Parser RSS Python 3.1?
- 5. Python SVG parser
- 6. szybki sposób podzielić alfa i numeryczne znaków w ciąg Pythona
- 7. HTML-ładny drukowanie dla Pythona
- 8. Kompresuj (minimalizuj) HTML z Pythona
- 9. Prosty HTML Dom Parser: Jak wstawić do elementów
- 10. Nie zdolne do analizowania html za pomocą lxml XPath parser
- 11. <tbody> glitch w PHP Prosty parser DOM HTML
- 12. znalezienie i usunięcie znaczniki HTML z PHP Prosty HTML DOM Parser
- 13. llvm-clang: inkrementalny lub online parser?
- 14. Antisamy parser force tag zamykający
- 15. Parser SSI napisany w PHP?
- 16. Dekodowanie encji HTML za pomocą Pythona
- 17. Zakreślacz kodu Pythona do publikowania w html
- 18. Haskell - Parser rekurencyjny zejście
- 19. C# ASP.NET QueryString parser
- 20. Prosty C XML parser
- 21. DOM Parser XML Przykład
- 22. Jak zrozumieć parser Anorm?
- 23. Parser z językiem DOT
- 24. parser rss w .net
- 25. XML :: Parser odmawia instalacji
- 26. Wielowątkowe używanie Stanford Parser
- 27. XML Parser dla Ruby
- 28. LISP Parser C++
- 29. Microsoft Powerpoint Python Parser
- 30. Parser uczący w pytonie
[Trzymaj kucyka z dala ...] (http://stackoverflow.com/a/1732454/554546) –
Nie mam doświadczenia z parsowaniem kodu HTML w Pythonie, ale [tutaj] (http: //blog.ianbicking .org/2008/03/30/python-html-parser-performance /) to niektóre wyniki testów porównawczych, które mogą Ci się przydać. –
[regex i HTML == błąd] (http://stackoverflow.com/a/1732454/554546) –