[help] парсинг картинок curl - 404

Тема в разделе "PHP", создана пользователем Adeka, 17 окт 2008.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Adeka

    Adeka Постоялец

    Регистр.:
    17 сен 2006
    Сообщения:
    126
    Симпатии:
    42
    Короче, задача - спарсить картинки с сайта.
    В браузере картинка открывается, а курл ее не находит, т.е. сервер отдает 404.
    Также картинку не видят всякие php-proxy и проч.

    Пример:
    http://www.sportsmemorabilia.com/files/sports_import/Collectibles%20of%20the%20Game/t_176608.jpg
     
  2. Crazy108

    Crazy108 Создатель

    Регистр.:
    6 сен 2008
    Сообщения:
    45
    Симпатии:
    7
    Скорее всего проблема решится сразуже после того как добавить Еще один хидер Referer с доменом сайта откуда тянем картинки, и в данном случае http://www.sportsmemorabilia.com

    Там скорее всего стоит зващита от сабжа
     
  3. Adeka

    Adeka Постоялец

    Регистр.:
    17 сен 2006
    Сообщения:
    126
    Симпатии:
    42
    не пашет :(

    curl_setopt($ch, CURLOPT_REFERER, 'http://www.sportsmemorabilia.com');
     
  4. Crazy108

    Crazy108 Создатель

    Регистр.:
    6 сен 2008
    Сообщения:
    45
    Симпатии:
    7
    У меня тоже не работает та картинка, которая дана в примере. Толи ссылка битая, толи реально ее нет на сервере. Проверил просто картинки на сервере скачать. все отлично сливается.

    Возможно как вариант спасет TeleportPro
     
    Adeka нравится это.
  5. Adeka

    Adeka Постоялец

    Регистр.:
    17 сен 2006
    Сообщения:
    126
    Симпатии:
    42
    телепорт про отжигает!

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

    ох, работа :)
     
  6. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    590
    Походу отжигает не teleport, а ты - грабить курлом с собственного хоста? Жесть :-]
     
  7. Adeka

    Adeka Постоялец

    Регистр.:
    17 сен 2006
    Сообщения:
    126
    Симпатии:
    42
    2PHP_Master

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

    А кроме шуток, подсказал бы как ответить на поставленный в первом посте вопрос. :)
     
  8. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    884
    Симпатии:
    540
    Попробуй без прокси. Всё отлично грабится. Дело в том, что многие фри прокси, в том числе и те которые юрзают синонемайзеры, блокируюся защитой.
     
  9. Liver

    Liver

    Регистр.:
    24 сен 2008
    Сообщения:
    316
    Симпатии:
    91
    У меня такое было. Писал давно еще свою грабилку галерей для создания из них сайтов на лету. Ни curl, ни даже Snoopy не тянули некоторые хосты. В итоге использовал простой fsockopen и на нем остался. Сложнее, зато степень "пробиваемости" куда выше. И проки там были совсем не причем.

    Но набросал решение на snoopy и оно отлично расботало. Значит может все таки прокси. Провайдер напрмер любит прокси свое ставить не спрашивая.
    PHP:
    <?php
    include_once 'snoopy.class.php';

    $snoopy=new Snoopy();
    // ----------------------------------------------------------------------------------------------------------------имитация браузера
    $snoopy->agent="Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; MyIE2)";
    $snoopy->accept="text/html, application/xml;q=0.9, application/xhtml+xml;q=0.9, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1";
    $snoopy->rawheaders["Accept-Language"]="en";
    $snoopy->rawheaders["Accept-Charset"]="windows-1252, iso-8859-1;q=0.6, *;q=0.1";
    $snoopy->maxredirs=0//чтобы не реагировал на редирект                                    
    // ---------------------------------------------------------------------------------------------------------------/имитация браузера
    // забираем страницу
    $url="http://www.sportsmemorabilia.com/files/sports_import/Collectibles%20of%20the%20Game/t_176608.jpg";

    $snoopy->fetch($url);
    file_put_contents('test.jpg'$snoopy->results);
    ?>

    Snoopy у меня еще старый, но не думаю, что новый хуже
     
    xriby и Adeka нравится это.
  10. KPOT

    KPOT Постоялец

    Регистр.:
    19 май 2006
    Сообщения:
    96
    Симпатии:
    2
    Да дело в том что путь к картинке в коде страници которую забирает cURL путь к ней прописан не абсолютный, а что то типа src='/img/1.jpg'
     
Статус темы:
Закрыта.