ФорумПрограммированиеPHP для идиотов → Парсинг. Разбираем код.

Парсинг. Разбираем код.

  • Николай_П

    Сообщения: 74 Репутация: N Группа: Кто попало

    Spritz 1 февраля 2010 г. 15:06

    Доброго времени суток!

    // определяем ссылку для парсинга
    $url = 'http://www.yandex.ru/';

    $ch = curl_init(); //инициализируем curl-сессию
    curl_setopt($ch, CURLOPT_URL, $url); //задаем curl-у адрес
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //говорим, чтобы возвращал трансфер, а не печатал его напрямую
    curl_setopt($ch, CURLOPT_HEADER, 0); //говорим, чтобы заголовок включался в содержимое вывода
    curl_setopt($ch, CURLOPT_TIMEOUT, 10); //задаем максимальное время исполнении функции.
    $page = curl_exec ($ch); //присваеваем $page результат выполнения CURL-сессии
    curl_close($ch); //закрываем сессию
    echo $page; // выводим результат на экран

    подскажите, пожалуйста, почему если $url = 'http://www.yandex.ru/', то код странички грузится, а если $url = 'http://market.yandex.ru/' - то нет?

    Я попробовал прокомментировать код так как я его понимаю. Где ошибся поправьте.
    Заранее благодарен всем ответившим!

  • Trej Gun

    Сообщения: 5299 Репутация: N Группа: в ухо

    Spritz 1 февраля 2010 г. 15:08, спустя 2 минуты 19 секунд

    это уже гдето было
  • Faster

    Сообщения: 1159 Репутация: N Группа: Кто попало

    Spritz 1 февраля 2010 г. 15:16, спустя 7 минут 47 секунд

    дежавю
    чувак, я же тебе посоветовал response покурить?
  • Trej Gun

    Сообщения: 5299 Репутация: N Группа: в ухо

    Spritz 1 февраля 2010 г. 15:25, спустя 9 минут 24 секунды

    $user_cookie_file = $_SERVER['DOCUMENT_ROOT'].'/cookies.txt';
    $url = 'http://market.yandex.ru/';

    $ch = curl_init($url);

    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION,true);

    curl_setopt($ch, CURLOPT_COOKIEFILE, $user_cookie_file);
    curl_setopt($ch, CURLOPT_COOKIEJAR,  $user_cookie_file);


    $html = curl_exec($ch);
    curl_close($ch);
    echo $html;
  • Николай_П

    Сообщения: 74 Репутация: N Группа: Кто попало

    Spritz 1 февраля 2010 г. 15:35, спустя 9 минут 50 секунд

    Я добавлял строку
    curl_setopt($ch, CURLOPT_VERBOSE, 1);

    но ничего не происходило!

    CTAPbIu_MABP, в предложенном тобой коде заменил:
    $user_cookie_file = $_SERVER['DOCUMENT_ROOT'].'/ya/cookies.txt';
    $url = "http://market.yandex.ru/";


    запустил вывалило
    Warning: curl_setopt() [function.curl-setopt]: CURLOPT_FOLLOWLOCATION cannot be activated when in safe_mode or an open_basedir is set in /storage/home/srv11142/htdocs1/parser_yandex.php on line 10


    заменил на
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION,false);


    все выполнилось, но результата нет. Куки создались с вот таким содержанием
    # Netscape HTTP Cookie File
    # http://curl.haxx.se/rfc/cookie_spec.html
    # This file was generated by libcurl! Edit at your own risk.

    .yandex.ru TRUE / FALSE 1580416092 yandexuid 5695483481265056093
  • Trej Gun

    Сообщения: 5299 Репутация: N Группа: в ухо

    Spritz 1 февраля 2010 г. 15:54, спустя 19 минут 2 секунды

    Николай_П, у тебя там редирект, что ты еще хочешь?
  • Николай_П

    Сообщения: 74 Репутация: N Группа: Кто попало

    Spritz 1 февраля 2010 г. 15:58, спустя 4 минуты 23 секунды

    Объясни пожалуйста в чем проблема, что-то я не вкурил!
  • md5

    Сообщения: 11948 Репутация: N Группа: в ухо

    Spritz 1 февраля 2010 г. 15:59, спустя 22 секунды

    Николай_П, у тебя там на мыле [email protected] стоит автоответчик
    и когда к тебе на мыло с форума приходит уведомление, что в твоей теме ответили (а форум посылает от моего мыла), то мне приходит автоответ, что письмо тобой получено
    я заебался их удалять
    все умрут, а я изумруд
  • Trej Gun

    Сообщения: 5299 Репутация: N Группа: в ухо

    Spritz 1 февраля 2010 г. 16:01, спустя 1 минуту 54 секунды

    Николай_П, [man]curl_setopt[/man]
  • Николай_П

    Сообщения: 74 Репутация: N Группа: Кто попало

    Spritz 1 февраля 2010 г. 16:06, спустя 4 минуты 57 секунд

    curl мне нужны для имитации действий пользователя через браузер.
    Подскажи хотя бы как узнать что отправляет мой браузер сайту http://market.yandex.ru!
  • md5

    Сообщения: 11948 Репутация: N Группа: в ухо

    Spritz 1 февраля 2010 г. 16:12, спустя 5 минут 56 секунд

    Николай_П, надо поставить Live HTTP Headers - плагин для FIrefox
    и посмотреть заголовки
    все умрут, а я изумруд
  • Trej Gun

    Сообщения: 5299 Репутация: N Группа: в ухо

    Spritz 1 февраля 2010 г. 16:18, спустя 6 минут 17 секунд

    Николай_П, http://getfirebug.com/
  • Ewg777

    Сообщения: 510 Репутация: N Группа: Джедаи

    Spritz 2 февраля 2010 г. 2:44, спустя 10 часов 25 минут 46 секунд

    Николай_П,
    $curl = new DudeCurl('http://market.yandex.ru/');
    $html = $curl->exec();
    var_dump($html);
    Может проще?
  • Николай_П

    Сообщения: 74 Репутация: N Группа: Кто попало

    Spritz 2 февраля 2010 г. 2:57, спустя 13 минут 41 секунду

    А как мне Class 'DudeCurl' подключить?
  • Ewg777

    Сообщения: 510 Репутация: N Группа: Джедаи

    Spritz 2 февраля 2010 г. 2:59, спустя 1 минуту 10 секунд


    А как мне Class 'DudeCurl' подключить?
    http://src.helldude.ru/projects/PHP/DudeCurl/trunk/libs/DudeCurl.php

Пожалуйста, авторизуйтесь, чтобы написать комментарий!