• Как написать парсер проектов с платформ краудфандинга?

    copist
    @copist
    Empower people to give
    Рассмотрим сбор данных с донорского сервера 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. Ещё вариант запускать его через создание заданий в очереди, но в принципе и так уже будет работать.
    Ответ написан
    1 комментарий