Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> код возврата 301, получение информации с сайта 
V
    Опции темы
The_Aleksey
Дата 28.2.2008, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


<?php
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 10.10.2007
Где: Москва

Репутация: нет
Всего: 6



Привествую всех!
Такая проблема, нужно получить инфу с сайта, метод стандартный, работает, но на одном сайте, к которому я подрубаюсь, вместо его инфы, выдает: 
Код

HTTP/1.1 301 Moved Permanently Server: Sun-ONE-Web-Server/6.1 Date: Thu, 28 Feb 2008 10:00:21 GMT Content-length: 0 Content-type: text/html Location: /notices/tos.html Connection: close


Скрипт, для получения:
Код

<?php
Error_Reporting(E_ALL & ~E_NOTICE);
$address="www.bloomberg.com";
// соединяемся с хостом
$fp=fsockopen($address, 80, $errno, $errstr);
if (!$fp) echo "$errstr($errno)\n"; 
else 
{
   // запрос документа
   $out="GET / HTTP/1.1\r\n";
   // заголовок хоста
   $out.="Host: $address\r\n";
   // закрываем соединение
   $out.="Connection: Close\r\n";
   // конец заголовков
   $out.="\r\n";
   
   fwrite($fp, $out);
   while (!feof($fp))    
      echo fgets($fp, 256);
   fclose($fp);
}
?>


Может быть кто-нибудь встречался с такой проблемой. Как мне получить инфу с этого сайта?
PM MAIL   Вверх
GeneralElectric
Дата 28.2.2008, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 797
Регистрация: 11.1.2008

Репутация: нет
Всего: 16



я даже догадываюсь, что написано  в файле /notices/tos.html .........
PM MAIL   Вверх
The_Aleksey
Дата 28.2.2008, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


<?php
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 10.10.2007
Где: Москва

Репутация: нет
Всего: 6



Цитата

я даже догадываюсь, что написано  в файле /notices/tos.html .........


"Ничего у тебя не выйдет, в получении информации с нашего сайта?")
PM MAIL   Вверх
mishaSL
Дата 28.2.2008, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1046
Регистрация: 10.1.2007
Где: Санкт-Петербург

Репутация: 2
Всего: 54



The_Aleksey, в общем случае можно так:
1. Взять пример скрипта с использованием curl http://forum.vingrad.ru/forum/topic-163191...-fsockopen.html
2. Добавить опцию CURLOPT_FOLLOWLOCATION, т.е.:
Код

curl_setopt($cUrl,CURLOPT_FOLLOWLOCATION,1);


Подробнее об этой опции можно прочитать здесь



--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
GeneralElectric
Дата 28.2.2008, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 797
Регистрация: 11.1.2008

Репутация: нет
Всего: 16



mishaSL, ты не понял вопроса.
Там проблема совсем не в коде возврата.
PM MAIL   Вверх
mishaSL
Дата 28.2.2008, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1046
Регистрация: 10.1.2007
Где: Санкт-Петербург

Репутация: 2
Всего: 54



GeneralElectric, ммм.... 
тогда точно не понял вопрос. А в чем вопрос то?

Вот код:
Код

<?php

function urlGetContents(& $cUrl, $url, $port = 80, $timeout = 5, $errCount = 1)
{
    curl_setopt($cUrl, CURLOPT_URL, $url);
    curl_setopt($cUrl, CURLOPT_PORT, $port);
    curl_setopt($cUrl,CURLOPT_RETURNTRANSFER,1);
    curl_setopt($cUrl,CURLOPT_FOLLOWLOCATION,1);
    curl_setopt($cUrl, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)");
    curl_setopt($cUrl, CURLOPT_TIMEOUT, $timeout);
    $content = curl_exec($cUrl);
    if (curl_getinfo($cUrl,CURLINFO_HTTP_CODE) != 200) {
        return (($errCount < 2) ? urlGetContents($cUrl, $url, $port, $timeout, ++$errCount) : false);
    } else {
        return $content;
    }
}

$cUrl = curl_init();
$urlAddress = 'http://www.bloomberg.com';
if (($html = urlGetContents($cUrl, $urlAddress)) === false) {
    print "Адрес <b>".$urlAddress."</b> в данный момент недоступен";
} else {
    print $html;
}
curl_close($cUrl);

?>


Отлично выдает информацию аналогичную, что я вижу в браузере. А что еще нужно?



--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
The_Aleksey
Дата 28.2.2008, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


<?php
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 10.10.2007
Где: Москва

Репутация: нет
Всего: 6



mishaSL, спасибо за функцию, но тоже ничего не выдает. Наверное с этим сайтом не прокатит
PM MAIL   Вверх
skyboy
Дата 28.2.2008, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 1
Всего: 260



спецификация статус-сообщений может рассказать многое.
в данном случае происходит редирект(перенаправление) на относительный URI 
Цитата

/notices/tos.html
. кстати говоря, на той странице указанного сайта - условия пользования услугами сайта.
потому: 
- либо необходио принимать условия и установить у себя coockie(в случае со скриптом на стороне сервера вместо браузера - запомнить по заголовкам установки coockie и выдавать это coockie при каждом запросе)
- либо были нарушены условия использования сайтом/сервисом, потому был произведен редирект на страницу с правилами, чтоб подчеркнуть факт нарушения.
что из означенного - смотри сам.
PM MAIL   Вверх
GeneralElectric
Дата 28.2.2008, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 797
Регистрация: 11.1.2008

Репутация: нет
Всего: 16



The_Aleksey, не "ничего у тебя не выйдет", а "Это наш сайт, и мы тратим хренову тучу денег на его наполнение и поддержание. Хочешь свой сайт - собирай информацию сам, а чужое брать нехорошо".
PM MAIL   Вверх
The_Aleksey
Дата 28.2.2008, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


<?php
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 10.10.2007
Где: Москва

Репутация: нет
Всего: 6



GeneralElectric, ты видимо противник сбора инфы с других сайтов. Буду использовать какой-нибудь наш сайт, мне в общем только курсы валют нужны
PM MAIL   Вверх
mishaSL
Дата 28.2.2008, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1046
Регистрация: 10.1.2007
Где: Санкт-Петербург

Репутация: 2
Всего: 54



Цитата(The_Aleksey @  28.2.2008,  14:09 Найти цитируемый пост)
но тоже ничего не выдает. Наверное с этим сайтом не прокатит 

The_Aleksey, просто вас забанили на этом сайте наверное, вот и все.


--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
GeneralElectric
Дата 28.2.2008, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 797
Регистрация: 11.1.2008

Репутация: нет
Всего: 16



Фантастика.
Парсить курлом HTML главной страницы блумберга против его воли. Вместо того, чтобы пойти взять в любом формате через file_get_contents эти несчастные курсы там, где их раздают на халяву. Загадка.
PM MAIL   Вверх
The_Aleksey
Дата 28.2.2008, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


<?php
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 10.10.2007
Где: Москва

Репутация: нет
Всего: 6



Никаких претензий. Всем спасибо! закрываем тему
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Сеть | Следующая тема »


 




[ Время генерации скрипта: 0.0559 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.