Как писать большие парсеры каталогов, сайтов на php?
Добрый день!
Пишу парсеры каталогов xls, csv, yml по ссылкам перехожу парсю информацию с сайта. Парсеры разделяют характеристики, создают опции, сохраняют картинки и тд.
Сначала все делала в одном скрипте с сохранением в бд, теперь разделяю - сначала по каталогу, потом с сайта все сохраняю в json и только после этого запускаю отдельный скрипт сохранения в бд из json.
Вопрос в следующем:
Хотел бы спросить ваши методы и архитектуру работы парсеров, разборщиков каталогов и yml.
Как бороться с сохранением памяти и буфера, мб есть простые методы многопоточного парсера и нужны ли они вообще? Может кто-то разделяет на этапы загрузки и после заврешения скрипта 1 этапа запускается второй.
Вообщем хотелось бы какой-то новой информации в этой области, кто что посоветует. Не особо люблю библиотеки с гитхаба где все готово. Хотелось бы самому все писать и разбираться в каждой строчке кода.
Сейчас стоит задача спарсить yml с 6к товарами, при этом заходить по ссылке на их сайт и от туда сохранять описание и ссылки на картинки. Как можно ускорить добавление и снизить нагрузку ?
Moses Fender, с такой проблемой не встречался, но как правило можно попробовать самому обратится по ajax запросу и передать параметры нужные. Их в разработчике браузера глянуть)
Moses Fender, отправить такой же запрос, как отправляется в AJAX, и получить те же данные. В крайнем случае, если нужно, чтобы непосредственно выполнялись JS-скрипты, то использовать веб-драйверы (Selenium, Puppeteer, PhantomJS)
madc0de, вооот! Поэтому делать парсер на PHP - идея не шибко удачная. Он хорош для статичного HTML-текста. Гораздо удачнее мне видится парсинг при помощи JavaScript и даже jQuery, который прямо-таки заточен под это. Конечно, и при таком подходе не без подводных граблей.
Ну, я собственно свои пять копеек вставил на вопрос
Хотел бы спросить ваши методы и архитектуру работы парсеров,
Я сделал оболочку на дельфях, там хоть потоками, хоть чем скачивается документ, создаётся браузер, в нём запускается, потом парсится средствами JavaScript.
Moses Fender, ну на php я могу фантомjs использовать и просто сохранять готовый html с генерированным конетом через аякс. И потом распарсить так же через php)
этому велосипеду уже тонна лет...
1. по возможности производить парсинг на отдельном хосте
2. консольный парсер избавлен от некоторых ограничений, например времени выполнения
3. парсер - парсит, модель - хранит, а я - красавчег :)
4. по возможности парсить данные не с фронта - использовать sitemap, прайсы, ajax контроллеры возвращающие json