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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Получение определенной части html-страницы, скачать страницу с определенного места 
:(
    Опции темы
AriX
Дата 29.8.2005, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Проблема такая.

Нужно скриптом перебрать кучу страничек, чтобы выдрать оттуда определенную информацию.
Вообщем-то, скачать страничку, и найти в ней нужное проблем не составляет.
Но! Этих страниц порядка 50 тысяч, и каждая весит ~50 Кб. Т.е. если скачивать ее полностью, уйдет много трафика. Да и по скорости это долго.

Инфа, которая нужна, хранится практически в конце html-кода. Т.е. в принципе, мне нужно скачать только определенное кол-во байт в конце страницы.

Проблема как раз в этом и заключается - как это можно сделать?

Пробовал указывать загаловок Range при запросе страницы, но сервер все равно отдает ее всю, и возвращает код 200 OK, вместо 206 Partial content.

Есть подозрение, что сервер просто по сути, не поддерживает докачку для text/html файлов, коими обычные html'ки являются.
В RFC про HTTP 1.1 ничего не нашел (может плохо искал?).

Заранее спасибо за любые разъяснения!
PM MAIL   Вверх
IZ@TOP
Дата 30.8.2005, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

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



Сомневаюсь что такое вообще возможно.
Если скрипт находится на срвере хостера то зачем траффик жалеть?


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
AriX
Дата 31.8.2005, 08:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



IZ@TOP
Цитата
Если скрипт находится на срвере хостера то зачем траффик жалеть?

smile Хитрый ты. Скрипт на сервере хостера не лежит smile Тот хостинг, который мне доступен не разрешает соединения открывать. Конечно, я теперь буду пробовать wget'ом сливать.
Но меня просто заинтересовала эта проблема.
Про трафик: одна страничка весит 31 КБ в среднем... Этих страничек 46600
46600 * 31 КБ / 1024 = 1410 МБ
Многовато smile Если еще учесть, что из этих 30 КБ мне нужно максимум 100 байт smile
Цитата
Сомневаюсь что такое вообще возможно.

Похоже так оно и есть, сервак может решать, обрабатывать ли ему заголовок Range или нет. Получается, что text/html они отдают только полностью :-/

Это сообщение отредактировал(а) AriX - 31.8.2005, 09:01
PM MAIL   Вверх
Mal Hack
Дата 31.8.2005, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


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

Репутация: 5
Всего: 261



Если ты юзаешь fsockopen, то с ним можно попробовать заюзать fseek, но не думаю, что прокатит
PM ICQ   Вверх
AriX
Дата 1.9.2005, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Mal Hack
На другом форуме примерно разобрались в чем проблема: все зависит от сервера, т.е. захочет ли он отдавать часть запрошенного документа или нет. Вот например по-дефолту Апач 1.3.33 не хочет, а Апач 2.x отдает запрошенную часть :-/
А сервер, с которого мне нужно, стоит на 1.3.33.. Так что облом похоже smile
PM MAIL   Вверх
matrlx
Дата 22.9.2005, 01:16 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Код

<?
function httpget($host, $port, $page, $servcookie){
Global $cookie;

while (true){
unset($tryagain);
unset($data);
unset($cookiearray);

if ($page==""){$page="/";}

$fp=@fsockopen($host, $port);
$query="GET $page HTTP/1.1\r\n";
$query.="Accept: */*\r\n";
$query.="Accept-Language: ru\r\n";
$query.="User-Agent: WapWorker/2.0\r\n";
$query.="Host: $host\r\n";
$query.="Connection: Keep-Alive\r\n";
if (isset($cookie)){$query.="Cookie: $servcookie\r\n";}
$query.="\r\n";
fputs($fp,$query);
while(!feof($fp)){$data.=fread($fp,4096);}
fclose($fp);

$headers=explode("\r\n", substr($data,0,strpos($data,"\r\n\r\n")));

foreach ($headers as $header){

if (substr($header,0,12)=="Set-Cookie: "){
 $cookiearray[]=eregi_replace("(Set-Cookie: )([0-9a-z=]+)(; )?(.*)$","\\2",$header);
}

if (substr($header,0,10)=="Location: "){
 $redir=eregi_replace("(Location: )(.+)$","\\2",$header);
 if (substr($redir,0,7)=="http://"){
  $host=eregi_replace("(http://)([^/]+)(/)?(.*)","\\2",$redir);
  $page=eregi_replace("(http://)([^/]+)(.*)","\\3",$redir);
 } else {
  $page=$redir;
 }
 $tryagain=1;
 break;
}

}

$cookie.=@implode("; ",$cookiearray);
$servcookie=$cookie;

if (!$tryagain){break;}
}
return $data;
}
set_time_limit(0);

httpget("www.sitename.ru", 80, "/login.php?login=1234&pass=1234", "");

//object.php - страница с которой выдераем инфу
$data=httpget("www.sitename.ru", 80, "/object.php?id=$id", $cookie);

//Обрезаем заголовок из $data
//Обрабатываем $data как душе угодно!


?>

PM MAIL   Вверх
AriX
Дата 22.9.2005, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



matrlx
Не пойму... Этот код разве поможет вытащить часть страницы?
PM MAIL   Вверх
matrlx
Дата 2.10.2005, 01:25 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



С помошью этого кодо можно вытащить всю страницу а потом уже используя шаблоны можно извлечь части страницы!
Скажи что тебе конкретно надо получить со страницы?
Какую инфу? На конкретном примере той страницы, которую те надо разкурочить! smile
PM MAIL   Вверх
AriX
Дата 3.10.2005, 08:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



matrlx
Всю страницу мне качать не нужно, это понятно как сделать.
Нужна только определенная часть.
Смотри начало топика.
В принципе мы уже разобрались, в любом случае все зависит от настроек сервера.
В моем случае, это сделать похоже не получиться.
PM MAIL   Вверх
vpokorp
Дата 8.8.2008, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(AriX @ 1.9.2005,  11:00)
Mal Hack
На другом форуме примерно разобрались в чем проблема: все зависит от сервера, т.е. захочет ли он отдавать часть запрошенного документа или нет. Вот например по-дефолту Апач 1.3.33 не хочет, а Апач 2.x отдает запрошенную часть :-/
А сервер, с которого мне нужно, стоит на 1.3.33.. Так что облом похоже :(

А к то подскажет - как определить - какой там Апач стоит?


Код

Заголовок 
- размер 35518, ip 123.456.789.012
HTTP/1.0 200 OK 
Date: Fri, 08 Aug 2008 11:05:37 GMT 
Server: 0W/0.8d 
Content-Type: text/html; charset=windows-1251 
Content-Length: 35518 
Last-Modified: Fri, 08 Aug 2008 11:05:37 GMT 
Expires: Thu, 09 Aug 2007 11:05:37 GMT 
pragma: no-cache 
cache-control: no-store, no-cache, must-revalidate 

PM   Вверх
AriX
Дата 8.8.2008, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



vpokorp, там нет Апача. Стоит вот этот сервер - http://0w.ru/httpd/
PM MAIL   Вверх
Anarki
Дата 8.8.2008, 22:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Если не поддерживает HTTP RANGE, то никак.


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


 




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


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

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