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

    Опубликовано 10 июля 2009 Леха Комментариев: 5

    Не так давно столкнулся с одной задачкой. Надо было взять 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 запрос.

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

    include "Snoopy.class.php";
    $snoopy = new Snoopy;
    
    $snoopy->fetchtext("http://www.php.net/");
    print $snoopy->results;
    $snoopy->fetchlinks("http://www.phpbuilder.com/");
    print $snoopy->results;

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

    PS. Прикол от webmonkey

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

    А что еще по теме?

     

    Ответы (5) на “Эмуляция браузера на php или парсер без проблем”

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

    2. Полезная штука (нашел Вас через Яндекс)

    3. Привет, напиши пожалуйста как инсталировать снупи

    4. а его не надо инсталлировать. Просто инклюдится в скрипте и все.

    5. Спасибо!

      Удивительно что эта библиотека до сих пор работает :)

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

    :wink: :-| :-x :twisted: :) 8-O :( :roll: :-P :oops: :-o :mrgreen: :lol: :idea: :-D :evil: :cry: 8) :arrow: :-? :?: :!:

    Это не спам. (сделано dimoning.ru)