Какие библиотеки\решения лучше использовать для парсинга сайтов?

Тема в разделе "PHP", создана пользователем jabbaxatt, 26 сен 2012.

Статус темы:
Закрыта.
Модераторы: latteo
  1. jabbaxatt

    jabbaxatt Добрый модератор

    Moderator
    Регистр.:
    21 янв 2009
    Сообщения:
    881
    Симпатии:
    414
    Модератор раздела: Необоснованное перечисление уже названных ранее в теме инструментов будет грозить вам баном на 5 дней за даблпостинг.

    Есть у кого опыт работы над парсерами различных сайтов?
    Хочу узнать с какой библиотекой лучше начинать работу:
    1) PHPQuery
    2) Simple HTML DOM
    3) Zend DOM Query
    4) Nokogiri
    5) ????????? ещё есть варианты?

    Приоритет при выборе:
    - простота работы с библиотекой
    - универсальность библиотеки
    - Понятный и полезный хелп и примеры, желательно на русском - я в английском не буб бум.
    - стабильность работы

    Ради этого я готов жертвовать скоростью работы парсера.

    Нужен совет с чего начать. А то вон даже древняя как ***но мамонта Simple HTML DOM выпустила 2 недели назад новую версию (это после 4-х! летнего перерыва в обновлениях). Нужны людям парсеры, нужны.

    P.S. очепятка в заголовке темы,если можно - прошу подправить.
     
  2. trooll

    trooll PHP кодер

    Регистр.:
    22 дек 2008
    Сообщения:
    503
    Симпатии:
    116
    Всегда использовал:
    1) CURL
    2) preg_match / preg_match_all
    3) снифер
     
    jabbaxatt нравится это.
  3. o_nix

    o_nix

    Регистр.:
    7 ноя 2007
    Сообщения:
    1.073
    Симпатии:
    1.037
    какой вообще смысл использовать какие то библиотеки если в php встроены SimpleXml и regExp ??

    советую разобраться с ними и в дальнейшем вообще никогда проблем не будет
    xml не всегда можно использовать по той причине что у 99% сайтов код не валидный, при чём это может быть и случайно так сделано и СПЕЦИАЛЬНО чтобы не парсили все кому не лень

    стабильнее и гибче regexp ничего не будет

    Советую лучше взять либу для того чтобы обойтись без разборок с curl, Snoopy например
     
    jabbaxatt нравится это.
  4. jabbaxatt

    jabbaxatt Добрый модератор

    Moderator
    Регистр.:
    21 янв 2009
    Сообщения:
    881
    Симпатии:
    414
    Snoopy это php класс, позволяющий забрать с сайта страницу, сымитировав при этом заход простого человека? А не будет ли просадки по производительности. если нужно парсить многие тысячи страниц? Использование Snoopy вроде как проще, но не есть ли смысл в затрате времени на изучение curl? Или нет?

    Т.к. для парсера важна универсальность и настраиваемость под различные сайты, то работа с xml не вариант, Вы правильно говорите про 99% сайтов с ошибками и незакрытыми тегами. Я поэтому в сторону библиотек и начал смотреть.

    Да, и как быть с многопоточностью? тоже весьма полезная весч. Может мне пригодиться что-то вроде multirequest
     
  5. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    884
    Симпатии:
    540
    Наличие встроенных функций не отменяет удобных инструментов, в которых разные баги и костыли есть. Но Согласен- всегда пользуюсь только регулярками. ДУМ - всё таки тяжёлая и не быстрая штука (но при большом количестве) .

    А то касается курла и вообще соединений - кроме простейших скриптов ничего в паблике не видел. А ведь зачастую нужен не простой функционал - к примеру мультипоточность при постинге на 100 сайтов, но чтобы за 1 минуту на 1 сайт не приходилось более 10 постов, работа с разными проксями ну и тп.
    Снупи, и http://www.phpclasses.org/package/4091-PHP-Retrieve-multiple-pages-simultaneously.html
    хорошие. Причём во втором организована работа с мультикурлом нестандартным способом.



    хм , а какая разница в универсальности- что ты пропишешь
    $title -> $pq('div.title')->getHtml();
    что
    $title = preg('~<div id="title>(.*?)"~');
    всё равно для сайтов разные шаблоны поиска будут. Да, на одном движке возможно и сделать один парсинг для большенства сайтов, но нет принципиально никакой разницы, чем ты будешь вырывать контент.
     
    latteo нравится это.
  6. mcdir

    mcdir

    Регистр.:
    6 ноя 2007
    Сообщения:
    202
    Симпатии:
    37
     
  7. idimka

    idimka

    Регистр.:
    31 авг 2007
    Сообщения:
    218
    Симпатии:
    51
    Как раз на хабре хороший пост на эту тему:
    http://habrahabr.ru/post/114323/#habracut
    Выводы:
    Однозначно каждая из представленных библиотек имеет право на жизнь.
    Тот, кому нужен чистый и понятный код, может использовать «PHPQuery». «Nokogiri» и «Zend DOM Query» пригодятся, если скорость занимает немаловажную роль.
    «Simple HTML DOM» явно отстаёт от своих конкурентов, по-этому я не советую использовать в серьёзных проектах.
     
  8. Qwest-fx

    Qwest-fx Постоялец

    Регистр.:
    3 апр 2007
    Сообщения:
    129
    Симпатии:
    39
    Здесь была упомянута библиотека (multirequest), которая использует
    из-за неё у меня комп встаёт в ступор, т.к. результат её работы только int -1 (Баг)
    Так вот, интересно, как решается данный баг на windows? (в моём случае XP, на 7 такая же проблема вроде), если ну очень надо использовать последнюю стабильную версию php 5.4 или 5.3

    Касательно парсинга, часто ставится задача спарсить информацию, которая закрыта от простого копирования HTML кода, шифрованием с помощью js. И написать аналог на php проблема. Имеется ли попсовое решение для данной задачи, в режиме multicurl.

    Мне приходилось например постом отправлять информацию с помощью Jquery, чтобы получить html, либо использовать Xedant Human Emulator.
     
  9. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    884
    Симпатии:
    540
    ересь какаято.
    Отчасти вы правы про curl_multi_select -
    с этой функцией есть проблемы. Она вводит в бесконечный цикл на пхп <5.3 . Потом догадались залатать дыру и проблем быть не должно. Если не считать что курл сам по себе не особо и стабильно работает. Порой слышал нарекания , что скрипт останавливается если долго работает . У меня нередко падает с неизвестной ошибкой вместе с апачем.
    НО, лично я игрался с curl_multi_select и реализаций товарища Тимофея - вроде совмещённый вариант мне кажется более или менее быстрым. Протестить увы не удалось- погрешность достигает 200% .
     
    Extalionez нравится это.
  10. NDK13

    NDK13 Создатель

    Регистр.:
    31 авг 2012
    Сообщения:
    36
    Симпатии:
    14
    Пробовал в свое время Simple HTML DOM. Понравилось. Маленький, простой, синтаксис в стиле jQuery что оказалось удобно.
    Если говорить про сборщиков страниц, то вот вроде перспективный проект http://sourceforge.net/projects/phpcrawl/
     
Статус темы:
Закрыта.