Извлечение информации из html с использованием PHP (XPath), PHP / Python (Regexp) или Python (XPath) - PullRequest
1 голос
/ 12 октября 2009

у меня ок. 40k + HTML-документы, из которых мне нужно извлечь информацию. Я пытался сделать это, используя PHP + Tidy (потому что большинство файлов не правильно сформированы) + DOMDocument + XPath, но это очень медленно .... Я советую использовать регулярные выражения, но HTML-файлы не размечаются семантически (таблица основанный макет, с бессмысленными тегами / классами, используемыми повсеместно), и я не знаю, с чего мне начать ...

Просто любопытно, использует ли regexp (PHP / Python) быстрее, чем библиотека Python XPath? Является ли библиотека Xpath для Python в целом быстрее, чем аналог PHP?

Ответы [ 3 ]

3 голосов
/ 12 октября 2009

Если требуется скорость, взгляните на lxml .lxml - это питонное связывание для библиотек libxml2 и libxslt C.Использование библиотек C намного быстрее, чем любая чистая версия php или python.

Есть несколько впечатляющих тестов от Ian Bicking:

В заключение

Я знал, что lxml был быстрым до того, как начал эти тесты, но я не ожидал, что он будет таким быстрым.

Результаты анализа:

Анализ результатов http://1.2.3.9/bmi/blog.ianbicking.org/wp-content/uploads/images/parsing-results.png

2 голосов
/ 12 октября 2009

Вы можете попробовать Beautiful Soup в Python. Это довольно хороший парсер для генерации полезного DOM из мусорного HTML. Это с некоторыми навыками регулярных выражений может дать вам то, что вам нужно. Удачной охоты!

В моем субъективном опыте большинство сравнительных операций в Python выполняются быстрее, чем в PHP. Частично из-за того, что Python является скомпилированным языком, а не интерпретируется во время выполнения, частично из-за того, что Python был оптимизирован для большей эффективности его участниками ...

Тем не менее, для 40k + документов, найдите хороший быстрый аппарат; -)

0 голосов
/ 12 октября 2009

Как и в предыдущем посте, Python в целом быстрее php из-за компиляции байт-кода (эти файлы .pyc). И многие парсеры DOM / SAX все равно используют немало регулярных выражений. Тем, кто сказал вам использовать регулярные выражения, нужно сказать, что это не волшебная палочка. Для документов с разрешением более 40k я бы порекомендовал распараллелить задачу, используя новые многопоточности или классический параллельный питон .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...