Руководство: Как создать паука-парсера на PHP

Парсер, паук, бот, робот или все равно как вы его назовете — это программа, которая автоматически получает (парсит) и обрабатывает данные с сайтов.

Например, Google индексирует и ранжирует страницы с помощью многочисленных пауков и ботов. Кроме того, есть проверяльщики ссылок, HTML валидаторы и веб-шпионы. Да, в этой статье мы вам покажем, как сделать своего веб-шпиона на PHP.

Скачать (.zip, 31 Кб)
И конечно, главная цель такого шпиона — отслеживание цен конкурентов.

Зачем вам это? Вам может быть и не понадобится, а покупателю или заказчику, имеющему много конкурентов, очень даже. С помощью такого паука очень удобно отслеживать цены в автоматическом режиме.

1 – Требования

  • PHP сервер – также нужен cron.
  • MySQL – будем хранить данные в ней.

2 – Основы

Начнем с основного функционала, и для этого попытаемся получить немного данных от источника. Предположим, что вы продаете обувь, и Zappos ваш основной конкурент (об этом можно только мечтать).

Например, возьмем NIKE FREE RUN+ 2. Сначала будем использовать fopen, чтобы открыть страницу, далее fgets, чтобы ее прочитать и feof для проверки, когда нужно закончить читать. Сейчас нужно проверить, чтобы функция fopen была доступна на сервере (можно проверить через phpinfo ). Первые строки кода:

Если вы отобразите контент из переменной $content на экран, то увидите HTML код без вставок CSS или JS. Это особенность подключения таких файлов на zappos.

У нас есть контент, теперь нужна цена товара.

Как отличить цену от любой другой цифры на странице? Очевидно, что перед ценой стоит знак доллара “$”. Чтобы найти цифру с этим знаком, мы будем использовать регулярные выражения.

Но в этом случае регулярное выражение будет срабатывать на любой цене на странице. И здесь Zappos пошел на встречу шпионам (и не только им). Официальная цена продукта идет всегда первой. Остальные цены идут дальше, таким образом, мы можем их игнорировать.

Код будет выглядеть так:

Цена у нас есть.

3 – Сохранение данных в MySQL

Подготовим базу данных. Создадим таблицу с именем zappos. Она будет состоять из четырех столбцов:

  • ID — Первичный ключ таблицы
  • Date — Когда были сохранены данные, что хорошо для отчетов.
  • Value — Найденное значение
  • Other_Values — Не нужные нам значения. На всякий случай, если владелец сайта поменяет html структуру страницы

В phpmyadmin создаем базу с именем spy, и вставляем в нее таблицу zappos:

Таблицу создали, теперь можно добавлять в нее данные. Для этого нужно mysql подключение в PHP и подготовленные цены для сохранения.

Подготовка цен заключается в том, чтобы удалить из данных все пробелы, запятые и точки.
Для соединения с базой мы будем использовать mysql_connect, далее mysql_select_db, чтобы выбрать базу “spy” и mysql_query, чтобы сохранить данные.

4 – Умный шпион с помощью cron

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

Чтобы наполнять нашу таблицу данными, нам нужно создать задание для cron, которое будет исполняться каждый день в 1 час ночи.

У нас есть команды, необходимые для этого:
Посмотреть файл cron

5 – Немного симпатичных диаграмм

my-spy

Если вы планируете использовать эти данные, то неплохо бы их как-то оформить.

В этом случае можно подключить gvChart jQuery плагин. Он берет данные из таблиц, оформленные через массив, и выводит их в виде симпатичных диаграмм.

Код:

Улучшения?

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

А какие улучшения сделали бы вы?
P.S.: Интересуют услуги по созданию сайтов? Обращайтесь в компанию
Kraftwork, они уже давно занимаются разработкой сайтов в Москве и делают это неплохо.


8 комментариев на “Руководство: Как создать паука-парсера на PHP

  1. А если есть необходимость предворительного входа через логин и пароль? Допустим мне известен логин и пароль, но информация находится внутри аккаунта. Если я залогинюсь, а потом использую скрипт чтения страницы, то не особо получается... Считывается главная страница, какбуд-то вход не производился.

  2. Прошу помощи, в объяснении.

    Спайдер, этот, получает контент страницы БЕЗ html,в то время как

    Crawler должен брать ссылки, если брать их из базы спайдера, то придётся опять брать контент , но С html.

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

    Сюда, пожалуйста , кому не трудно : noizefan1@mail.ru

    • Вы запутались немного.

      В статье шла речь о конкретном функционале — получение цены по определенному товару.

      Спайдер и краулер — это одно и то же.

      • Возможно я и запутался)

        А как называется переходчик по ссылкам?

        --Crawler.

        Выделяет все ссылки, присутствующие на странице. Его задача — определить, куда дальше должен идти паук, основываясь на ссылках или исходя из заранее заданного списка адресов. Краулер, следуя по найденным ссылкам, осуществляет поиск новых документов, еще неизвестных поисковой системе.— из глубины интернета.

Оставить комментарий