Эмуляция браузера на php или парсер без проблем

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

Не так давно столкнулся с одной задачкой. Надо было взять 1000 урлов из поиска Яндекса и проверить наличие определенных признаков (строк) на странице. Пытался все сделать с помощью стандартной функции fsockopen, но возникла проблема — 70-80% серверов меня приравнивали к ДДОС атаке и банили по IP.  Убил часа 2-3 на подборы различных User-Agent, но меня всеравно причисляли к вредителям и блокировали.

В результате я наткнулся на библиотеку snoopy.php, которая позволяет эмулировать работу браузера. Там мощный набор функций не только для эмуляции браузера, а еще и для нормального парсинга сайтов.

snoopy

Вот основной перечень полезных функций этого парсера:

  • $snoopy->fetch(«http://www.php.net/»);
    Отправляем запрос по интересующему нас урлу и получаем в ответ все содержимое страницы
  • $snoopy->fetchtext(«http://www.php.net/»);
    После отправки запроса получаем только текст, который на странице. Т.е. все теги, картики и скрипты вырезаются.
  • $snoopy->fetchlinks(«http://www.php.net/»);
    Получаем массив с урлами ссылок, которые находятся на интересующей нас странице

И перечень основных переменных этого класса:

  • $snoopy->results;
    Переменная в которую записывается результат работы предыдущих функций. Она может вернуть строку или массив, в зависимости от того, что хотим получить.
  • $snoopy->agent;
    User-agent, который быдет передаваться при отправке наших запросов.
  • $snoopy->referer;
    Поле реферера, которое будет передано запрашиваемому серверу. Его можно использовать, например, чтобы создавать видимость переходов по ссылкам внутренней навигации сайта.

Также с помощью этой библиотеки можно не только обращаться к страницам, но еще и эмулировать отправку html форм. Видимо создавать post запрос.

Примеры использования:

 

Советую всем. Меня эта библиотека просто выручила в трудную минуту.

PS. Прикол от webmonkey

Бот по имени Зомби

10 thoughts on “Эмуляция браузера на php или парсер без проблем

  1. Djn еще б к нему настройку чтобы джава исполнялись на запрашиваемых страницах- цены б ему не было

  2. Спасибо!
    Удивительно что эта библиотека до сих пор работает 🙂

  3. защиту гугла от iframes и т.п. вставок этот скрипт не обходит. Жалко конечно. Ищу способ обхода защиты от вставки методом iframes. Посоветуйте что-нибудь.

  4. Такой вопрос по снуппи
    на запрашиваемой странице стоит проверка :

    то есть если JS отключен — то фиг вам а не правильный код страницы, переходит на «обновите браузер»

    можно ли с помощью снуппи сделать имитацию наличия JS при запросе страницы ?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *