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

Статус
В этой теме нельзя размещать новые ответы.

jabbaxatt

Добрый модератор
Регистрация
21 Янв 2009
Сообщения
902
Реакции
432
Модератор раздела: Необоснованное перечисление уже названных ранее в теме инструментов будет грозить вам баном на 5 дней за даблпостинг.

Есть у кого опыт работы над парсерами различных сайтов?
Хочу узнать с какой библиотекой лучше начинать работу:
1) Для просмотра ссылки Войди или Зарегистрируйся
2) Для просмотра ссылки Войди или Зарегистрируйся
3) Для просмотра ссылки Войди или Зарегистрируйся
4) Для просмотра ссылки Войди или Зарегистрируйся
5) ????????? ещё есть варианты?

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

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

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

P.S. очепятка в заголовке темы,если можно - прошу подправить.
 
Всегда использовал:
1) CURL
2) preg_match / preg_match_all
3) снифер
 
какой вообще смысл использовать какие то библиотеки если в php встроены SimpleXml и regExp ??

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

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

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

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

Да, и как быть с многопоточностью? тоже весьма полезная весч. Может мне пригодиться что-то вроде Для просмотра ссылки Войди или Зарегистрируйся
 
какой вообще смысл использовать какие то библиотеки если в php встроены SimpleXml и regExp ??
Наличие встроенных функций не отменяет удобных инструментов, в которых разные баги и костыли есть. Но Согласен- всегда пользуюсь только регулярками. ДУМ - всё таки тяжёлая и не быстрая штука (но при большом количестве) .

А то касается курла и вообще соединений - кроме простейших скриптов ничего в паблике не видел. А ведь зачастую нужен не простой функционал - к примеру мультипоточность при постинге на 100 сайтов, но чтобы за 1 минуту на 1 сайт не приходилось более 10 постов, работа с разными проксями ну и тп.
Снупи, и Для просмотра ссылки Войди или Зарегистрируйся
хорошие. Причём во втором организована работа с мультикурлом нестандартным способом.



Т.к. для парсера важна универсальность и настраиваемость под различные сайты, то работа с xml не вариант, Вы правильно говорите про 99% сайтов с ошибками и незакрытыми тегами. Я поэтому в сторону библиотек и начал смотреть.
хм , а какая разница в универсальности- что ты пропишешь
$title -> $pq('div.title')->getHtml();
что
$title = preg('~<div id="title>(.*?)"~');
всё равно для сайтов разные шаблоны поиска будут. Да, на одном движке возможно и сделать один парсинг для большенства сайтов, но нет принципиально никакой разницы, чем ты будешь вырывать контент.
 
Как раз на хабре хороший пост на эту тему:
Для просмотра ссылки Войди или Зарегистрируйся
Выводы:
Однозначно каждая из представленных библиотек имеет право на жизнь.
Тот, кому нужен чистый и понятный код, может использовать «PHPQuery». «Nokogiri» и «Zend DOM Query» пригодятся, если скорость занимает немаловажную роль.
«Simple HTML DOM» явно отстаёт от своих конкурентов, по-этому я не советую использовать в серьёзных проектах.
 
Здесь была упомянута библиотека (multirequest), которая использует
из-за неё у меня комп встаёт в ступор, т.к. результат её работы только int -1 (Баг)
Так вот, интересно, как решается данный баг на windows? (в моём случае XP, на 7 такая же проблема вроде), если ну очень надо использовать последнюю стабильную версию php 5.4 или 5.3

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

Мне приходилось например постом отправлять информацию с помощью Jquery, чтобы получить html, либо использовать Xedant Human Emulator.
 
Мне приходилось например постом отправлять информацию с помощью Jquery, чтобы получить html, либо использовать Xedant Human Emulator.
ересь какаято.
Отчасти вы правы про curl_multi_select -
с этой функцией есть проблемы. Она вводит в бесконечный цикл на пхп <5.3 . Потом догадались залатать дыру и проблем быть не должно. Если не считать что курл сам по себе не особо и стабильно работает. Порой слышал нарекания , что скрипт останавливается если долго работает . У меня нередко падает с неизвестной ошибкой вместе с апачем.
НО, лично я игрался с curl_multi_select и реализаций товарища Тимофея - вроде совмещённый вариант мне кажется более или менее быстрым. Протестить увы не удалось- погрешность достигает 200% .
 
Пробовал в свое время Simple HTML DOM. Понравилось. Маленький, простой, синтаксис в стиле jQuery что оказалось удобно.
Если говорить про сборщиков страниц, то вот вроде перспективный проект Для просмотра ссылки Войди или Зарегистрируйся
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху