Я написал python script, который обрабатывает большое количество загруженных веб-страниц HTML (120 тыс. страниц). Мне нужно проанализировать их и извлечь из него некоторую информацию. Я пробовал использовать BeautifulSoup, который прост и интуитивен, но, похоже, он работает очень медленно. Поскольку это то, что нужно регулярно запускать на слабой машине (на амазонке), важно. есть ли в python HTML/XML-парсер, который будет работать намного быстрее, чем BeautifulSoup? или я должен прибегать к регулярному анализу регулярных выражений.
Быстрый парсер HTML на языке python
Ответ 1
lxml - быстрый анализатор xml и html: http://lxml.de/parsing.html
Ответ 2
Анализаторы SAX-стиля могут быть быстрее, чем DOM-based. Вашему коду предоставляется поток элементов, и вы должны заключить (и потенциально хранить) свои отношения; но вам нужно только поддерживать столько состояний, сколько требуется для получения требуемых данных. Напротив, парсерам DOM-стиля необходимо построить навигационную объектную модель, которая требует времени (и памяти), которое, возможно, вам не нужно тратить.
Python имеет такой синтаксический анализатор для HTML; он называется HTMLParser
(html.parser
в Python 3). Однако, в зависимости от того, насколько сложно распознать данные, которые вы хотите извлечь, это может быть очень сложно успешно прервать такой синтаксический анализ. Если бы вы отправили файл примера и информацию о том, какие данные вы хотите извлечь из него, я, вероятно, мог бы взломать.
Ответ 3
попробуйте: ElementTree может быть быстрее, но я не уверен.
xml.etree.ElementTree import ElementTree
Ответ 4
Я тестировал различные варианты при создании сервиса serpapi.com, который позволяет искать/анализировать результаты Google.
https://medium.com/@vikoky/fastest-html-parser-available-now-f677a68b81dd