2014-10-11 10 views
2

У меня есть фиксированный хорошо структурированный источник html, входящие данные ясные и маленькие, просто содержит небольшой список div. Я знаю, что с использованием анализатора html для синтаксического анализа html, но это похоже на конкретный случай, и я не уверен, какой из них я должен использовать. Условия проблемы нижеHtml Parsing vs. Regex

  • данных ясно и хорошо структурирована
  • данных мал
  • вопросы производительности, приложение должно быть в состоянии получить столько, сколько данных, которые possibble
  • Приложение будет записывать данные в MongoDB база данных
  • Реализация языка программирования будет Scala или Python

Любое мнение ценно, так что я должен делать?

ответ

4

Я по-прежнему придерживаюсь использования HTML Parser, потому что, по крайней мере, существует определенный формат данных и специализированный инструмент, который понимает формат.

Если производительность имеет значение здесь, есть невероятно быстрый пакет lxml. Для HTML используйте lxml.html.

Вы также можете использовать удивительный пакет BeautifulSoup и let it use lxml parser under-the-hood. Кроме того, если данные, которые необходимо проанализировать, находятся в определенной части документа HTML, вы можете получить выигрыш в производительности, попросив BeautifulSoup проанализировать только соответствующую часть документа HTML, см. Больше по адресу: Parsing only part of a document.

И, чтобы следовать традициям для HTML + регулярных выражений потоков, вот ссылка на известную тему покрытия причин, почему вы не должны использовать регулярные выражения для разбора HTML:

+0

I что я не должен использовать regex для синтаксического анализа html, я знаю, что такое регулярное выражение и что он поворачивает, когда он реализован, да, я тоже получил урок автомата, большинство причин касаются html нестабильной структуры и большого количества данных, что неверно для нашего случая у нас есть хорошо структурированные и небольшие данные для обработки. поэтому, я ценю ваш ответ, но это не мы смотрим, я думаю. –

+0

@ HüseyinZengin спасибо. Трудно сказать, не видя, какие данные у вас есть, сколько и какие данные вам нужно проанализировать. Думаю, ваш лучший выбор - это измерить производительность самостоятельно. Например, реализуйте его с помощью 'lxml' и' regex'-only и сравнивайте его. – alecxe