Рассмотрим сбор данных с донорского сервера boomstarter.ru
Вот страница проекта на вашем сайте:
thestartman.ru/projects/item1001
А вот это его донор с бумстартера:
https://boomstarter.ru/projects/65396/planetarnyy_...
Нужны два скрипта: парсер страниц тОповых проектов и парсер отдельных страниц проектов
Вот список тОпов:
https://boomstarter.ru/discover/recommended рекомендуемые
https://boomstarter.ru/discover/popular популярные
https://boomstarter.ru/discover/recently-launched новые
https://boomstarter.ru/discover/ending-soon скоро завершатся
https://boomstarter.ru/discover/most-funded рекордсмены
Логика парсера тОпов бумстартера (реализация на PHP):
1. С помощью функций
file_get_contents или
curl или
функций работы с сокетами выкачиваются страницы по указанным выше URL
2. Определяются ссылки на проекты, про которые твоя система ещё не знает. Это можно сделать через поиск ссылок на проекты с помощью
регулярных выражений, с помощью
DOM +
XPath или с помощью phpQuery [
habrahabr.ru/post/69149 ]
вот пример кода для phpQuery, чтобы найти ссылки
$htmlContent = file_get_contents('https://boomstarter.ru/discover/recommended');
$document = phpQuery::newDocument($htmlContent);
$prjLinks = $document->find('.project-cards .project-card a');
foreach($prjLinks as $prjLink) {
$href = $prjLink->attr('href');
// сохранить ссылку в базу, если ещё не был сохранён
}
3. Новые найденные ссылки заносятся в таблицу с пометками: "откуда" = "с бумстартера", "когда" = "сейчас", "статус" = "не выкачано", "топ" = "рекомендуемые/популярные/новые и прочее"
4. Этот скрипт нужно запускать периодически, например, раз в сутки. На системах linux есть утилита
crontab# каждые сутки в полночь запускать скрипт
0 0 * * * php /path/to/boomstarter-parser.php
Второй скрипт должен выкачивать с бумстертера страницы проектов и заносить в базу найденные описания
Логика парсера проектов (реализация на PHP):
1. извлечь из базы ссылки на проекты, помеченные "откуда" = "бумстартер" и "статус" = "не выкачано" ИЛИ ссылки на проекты, помеченные "откуда" = "бумстартер" и "когда" = "двое суток назад и старше"
2. аналогично выкачать страницу через file_get_contents или curl
3. аналогично найти на странице картинку, описание, фонд, статус, особые признаки и прочее.
4. выкачать картинку локально
5. записать описание, фонд, статус, локальную ссылку на картинку и прочее в базу данных и пометить "статус" = "выкачано" и "когда" = "сейчас"
Этот скрипт тоже можно запускать по крону. Лучше если он будет обрабатывать небольшое количество URL за один запуск. Его нужно поставить на запуск раз в несколько минут.
Лучше сделать их него "демона", который постоянно следит за появлением новых и устаревших записей в таблице URL. Ещё вариант запускать его через создание заданий в очереди, но в принципе и так уже будет работать.