Решил Вам предоставить информацию, которая поможет спарсить ЛЮБОЙ сайт. Теперь КАЖДЫЙ сможет парсить всё, что душе угодно. К тому же написать бесплатный грабер сайтов не составит никакого труда...
Здравствуйте, мои дорогие читатели! Сегодня я решил поделиться с Вами информацией о создании бесплатно парсера своими руками, или как некоторые люди говорят - грабера.
Для тех, кто в танке и не в теме. Парсер (или парсинг, т.е. процесс) - это программный продукт, который помогает собирать в автоматическом режиме информацию с площадок. Я таким образом смог насобирать несколько тысяч песен с кучи сайтов. Я уже писал об этом в моей статье Пишем php парсер сайтов с нуля, но я пользовался немного другой библиотекой и был далёк от совершенства.
Все основные проблемы моего прошлого подхода заключались в том, что в старом методе сбора не было эмуляции работы пользователя. Т.е. к серверу приходили запросы в автоматическом режиме, и более-менее умные сайты (я сейчас говорю про злополучный Avito) быстро распознавали меня как робота и блокировали доступ к сайту. ну сделал я 5-10 обращений к сайту и что дальше? Бан на полчаса или на весь день. После такого жить просто не хотелось. Тогда я всё бросил и решил уйти в монахи, но через год понял. что это не моё. И нашёл для себя PhantomJS.
Фантом - это такой webkit-браузер, который можно запускать без графического интерфейса и бегать по страницам других сайтов без боязни быть заблокированным. Если попроще, то это оболочка, которая придаёт жизнь Вашему парсеру, помогает дать ему душу. Т.е. с использованием PhantomJS вы сможете представиться каждому порталу как Настоящий пользователь!
Сейчас я опишу подробную инструкцию по тому, с чего начать, опишу несколько интересных фишек, которые я смог обнаружить на просмотрах интернета + часть я вывел опытным путём. Поехали!
В начале нам нужно идти на сайт разработчиков. На главной странице скачиваем библиотечку и радуемся, теперь у нас есть свой Фантом!
Заходим в папку bin и видим файл под названием phantomjs.exe Именно этот файл и будет играть основную роль в нашем создании бесплатном парсере (Вы тратите только своё время, не более того).
Давайте в начале создадим код на PHP, который будет обращаться к нашему фантому и выводить полученные результаты. Кстати, это вариант под номером 1.
Я написал вот такую функцию:
В функцию shell_exec я передаю Путь, где лежит фантом и Путь к исполняемому JavaScript-коду. Да да, весь парсинг будет на JavaScript, т.е любой из Вас сможет безболезненно использовать JQuery и JS и легко работать с DOM-моделью (блоками сайта).
А теперь давайте изучим код, на примере которого я смог легко спарсить страничку с Avito. Вот пример:
С помощью такого небольшого кода я смог зайти на страницу Авито и спарсить цену квартиры. А на что способны Вы?) Я собирал таким образом всю информацию с практически ЛЮБОГО сайта. Здесь нет предела возможностям.
А теперь давайте ка покажу несколько фишечек при работе с PhantomJS.
1.Ожидание происхождения какого-то события
Очень полезно, если хотите нажать на какую-то кнопку и подождать возврата какого-то результата. Способ поможет обойти очень много защитных функций сайтов.
2. Подключение JQuery к сайту (вдруг нет, а вот вдруг)
Просто вставляем в загруженную страницу свою библиотеку и начинаем работать!
3. Выключаем всё CSS и картинки
А вот такой простейший код поможет отключить загрузку всех CSS-стилей и картинок, дабы ускорить работу сайта.
Остальные идеи и прелести Вы сможете подсмотреть в моём верхнем коде. Просто посмотрите функции и возьмите себе на заметку какие-то нужные вещи.
Могу сказать, что с помощью PhantomJS можно написать бесплатный PHP парсер сайтов всего лишь за пару дней. Любая площадка будет подвластна Вам, только если Вы сможете привлечь свою светлую голову в этот процесс.
На деле всё это не так уж и просто, так что школьничкам не советую писать кучу недопарсеров, которые будут засорять мировую паутину. Пробуйте подойти к делу с умом и у Вас всё обязательно получится!
Скоро будет новый подгончик по материалам! Всем огромное спасибо за посещение моего сайта!