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

Статус
В этой теме нельзя размещать новые ответы.
Вот уж чего не знал. Для русских символов всегда достаточно было сменить кодировку файла на utf-8.Если не сложно - объясните, пожалуйста, поподробнее что ещё вас в регулярках не устраивает, разумеется ещё кроме того, что они работают на долю секунды дольше чем строковые функции? Спасибо!!! DOM.... вообще не представляю как его в html юзать, ведь многим сайтам до xhtml оооочень далеко.

Ну, я использую всё - и регулярки и Dom и строковые.

Конкретно из регулярок - у меня функция preg_replace иногда искажает буквы. Примерно как в топике Для просмотра ссылки Войди или Зарегистрируйся только символы которые губит - другие и не все preg_replace вносят такие искажения.

Dom удобен не для разбора страницы на запчасти, а если нужно вытащить что-то конкретное. Например адреса всех ссылок (Href). Пара строчек и массив готов.

А строковые всем хороши, быстры и надёжны - но у них плохая универсальность. Ими делаю только то что можно сделать.

Конкретнее - попробуй код. У меня этот код гасит некоторые буквы исходного UTF-8:
PHP:
$text= preg_replace('/\s+/', ' ', $text);


А вот это работает нормально:
PHP:
$text=ereg_replace('[ ]+',' ',$text);

Вот ещё обсуждение похожей ситуации - Для просмотра ссылки Войди или Зарегистрируйся
 
Многопоточность решила бы эту задачу, но пока работаю с однопоточностью. Ибо должно и так хватить.
Многоточность парсеров в php кстати можно реализовать двумя способами:
1) использовать потоки php, которые берут задания из общего источника - БД, ФС. Плюсы - высокая стабильность, высокая масштабируемость потоков. Минусы - сложная реализация, и можно упереться в производительность общего источника.
2) использовать потоки MultiCurl. Получаем море плюсов, и всего один минус - низкая стабильность. Вот именно в этом случае возникает множество проблем... Которые решаются усердным дебагом, тестами, и т.д. Но и выгода очевидная - бешеная скорость.

что ещё вас в регулярках не устраивает, разумеется ещё кроме того, что они работают на долю секунды дольше чем строковые функции?
При случае 2 - использование MultiCurl php крашится(сам процесс), и дебаг самого PHP указывает на механизм регулярных выражений PHP. Использовал разные OS, разные версии php.

Конкретнее - попробуй код. У меня этот код гасит некоторые буквы исходного UTF-8:
PHP:
$text= preg_replace('/\s+/', ' ', $text);
А так
PHP:
$text= preg_replace('/\s+/u', ' ', $text);
?

И что значит портит? Ещё желательнее подобные тесты производить на последних стабильных версиях PHP.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху