За последние 24 часа нас посетил 46781 программист и 1266 роботов. Сейчас ищут 932 программиста ...

Вырвать кусок страницы с чужого сайта

Тема в разделе "PHP для новичков", создана пользователем Freakmeister, 4 окт 2012.

  1. Freakmeister

    Freakmeister Активный пользователь

    С нами с:
    20 дек 2009
    Сообщения:
    888
    Симпатии:
    5
    Есть магазин со страницей новинок:
    http://www.igromagaz.ru/buy_pc_games/key/igra_skoro_vyydet/
    Раньше я получал её содержимое через:
    Код (PHP):
    1. $content = file_get_contents('http://igromagaz.ru/buy_pc_games/key/igra_skoro_vyydet/index.php'); 
    И потом расчленял переменную $content регулярками, чтобы получить нужный мне контент - горизонтальный блок картинок с ссылками на товары. Когда админы сайта это просекли, они перекрыли мне кислород - уж не знаю как, либо урезали пермишшены на файл, либо что-то дописали в htaccess, либо вообще забанили обращения с моего сайта. Существует ли ещё какой-то альтернативный способ вырвать кусок страницы со стороннего сайта, помимо file_get_contents?
     
  2. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Я вот попробовал получил страницу.
    А что у тебя в переменной $content?
    В чем проблема?
     
  3. Freakmeister

    Freakmeister Активный пользователь

    С нами с:
    20 дек 2009
    Сообщения:
    888
    Симпатии:
    5
    Код (Text):
    1. PHP Warning: in file /portal/blocks/new_games.php on line 3: file_get_contents(http://www.igromagaz.ru/buy_pc_games/key/igra_skoro_vyydet/): failed to open stream: HTTP request failed! HTTP/1.1 503 Service Unavailable
     
  4. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    viewtopic.php?f=1&t=2804
     
  5. Freakmeister

    Freakmeister Активный пользователь

    С нами с:
    20 дек 2009
    Сообщения:
    888
    Симпатии:
    5
    Я не ворую контент, копирайты в картинках сохранены и ссылки ведут на их же магазин. Просто я зареген по партнёрке на этом сайте, и суть "кражи" состоит в том, чтобы получить на своем сайте блок новинок, который обновляется автоматически:
    http://maestro-magnifico.ru/testdir/igromagaz/
    А доступ мне залочили потому, что мой блок создаёт нагрузку на их сайт. Ибо одно обновление страницы на моём ресурсе от каждого пользователя = один запрос к странице новинок на их сайте.

    Добавлено спустя 5 минут 43 секунды:
    Посоны, подскажите как реализовать кэширование? Чтобы file_get_contents выполнялась всего раз в сутки, например. Можно прямо в двух словах, я умею гуглить.
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ну и дурак

    засунь её в скрипт отдельный, а полученные данные пихай в БД или файл. а из бд уже рисуй свои новинки.
     
  7. Freakmeister

    Freakmeister Активный пользователь

    С нами с:
    20 дек 2009
    Сообщения:
    888
    Симпатии:
    5
    А обновление на крон привязать что-ли?
     
  8. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    а обновление на крон привязать чтоли и пойти списаться с чуваками с того сайта, повиниться что бы тупой и попросить учинить какой-нить доступ к этому делу человеческий.
     
  9. Freakmeister

    Freakmeister Активный пользователь

    С нами с:
    20 дек 2009
    Сообщения:
    888
    Симпатии:
    5
    Запилил кэширование без всяких нубских кронов. И доступ мне благополучно разлочили.

    Код (PHP):
    1. <?php
    2. $time_sec=time();
    3. $time_file=filemtime($_P['a_path'].'logs/blocks/new_games.php');
    4. $time=$time_sec-$time_file;
    5.  
    6. if ($time > 86400) { //86400 секунд = 24 часа
    7.     $content = file_get_contents('http://www.igromagaz.ru/buy_pc_games/key/igra_skoro_vyydet/');
    8.     file_put_contents($_P['a_path'].'logs/blocks/new_games.php', $content);
    9. }
    10. ?>