Быстрый парсер HTML на языке python

Я написал python script, который обрабатывает большое количество загруженных веб-страниц HTML (120 тыс. страниц). Мне нужно проанализировать их и извлечь из него некоторую информацию. Я пробовал использовать BeautifulSoup, который прост и интуитивен, но, похоже, он работает очень медленно. Поскольку это то, что нужно регулярно запускать на слабой машине (на амазонке), важно. есть ли в python HTML/XML-парсер, который будет работать намного быстрее, чем BeautifulSoup? или я должен прибегать к регулярному анализу регулярных выражений.

Ответ 2

Анализаторы SAX-стиля могут быть быстрее, чем DOM-based. Вашему коду предоставляется поток элементов, и вы должны заключить (и потенциально хранить) свои отношения; но вам нужно только поддерживать столько состояний, сколько требуется для получения требуемых данных. Напротив, парсерам DOM-стиля необходимо построить навигационную объектную модель, которая требует времени (и памяти), которое, возможно, вам не нужно тратить.

Python имеет такой синтаксический анализатор для HTML; он называется HTMLParser (html.parser в Python 3). Однако, в зависимости от того, насколько сложно распознать данные, которые вы хотите извлечь, это может быть очень сложно успешно прервать такой синтаксический анализ. Если бы вы отправили файл примера и информацию о том, какие данные вы хотите извлечь из него, я, вероятно, мог бы взломать.

Ответ 3

попробуйте: ElementTree может быть быстрее, но я не уверен.

xml.etree.ElementTree import ElementTree