Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » HTML parser

Ответить
Настройки темы
HTML parser

Новый участник


Сообщения: 44
Благодарности: 0


Конфигурация

Профиль | Отправить PM | Цитировать


Изменения
Автор: vadimiron
Дата: 09-05-2008
Вот код который у меня есть, но проблемма в том, что я не получаю целевую страницу... В чем моя ошибка подскажите

PHP код: Выделить весь код

function get_content($host$get="/") {

$filePointer fsockopen($host80$errorNumber$errorString);
if (!
$filePointer)
{
    exit(
'Failed opening http socket connection: '.$errorString.' ('.$errorNumber.')<br/>\n');
}

$requestHeader "GET " $get "  HTTP/1.1\r\n";
$requestHeader.= "Host: ".$host."\r\n";
$requestHeader.= "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3\r\n";
$requestHeader.= "Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2\r\n";
$requestHeader.= "Accept-Language: ru,en;q=0.5\r\n";
$requestHeader.= "Accept-Charset: windows-1251;q=0.7,*;q=0.7\r\n";
$requestHeader.= "Content-Type: application/x-www-form-urlencoded\r\n";
$requestHeader.= "Connection: close\r\n";
$requestHeader.= "Referer: \r\n\r\n";

fwrite($filePointer$requestHeader);

$responseHeader '';
$responseContent '';

do {
    
$responseHeader.= fread($filePointer1);
}
while ( !
preg_match('/\\r\\n\\r\\n$/'$responseHeader) );

if (!
strstr($responseHeader"Transfer-Encoding: chunked")) {
    while (!
feof($filePointer)) {
        
$responseContent.= fgets($filePointer128);
    }
}
else {
    while (
$chunk_length hexdec(fgets($filePointer))) {
        
$responseContentChunk '';
                
$read_length 0;
                while (
$read_length $chunk_length) {
                    
$responseContentChunk .= fread($filePointer$chunk_length $read_length);
                    
$read_length strlen($responseContentChunk);
                }

                
$responseContent.= $responseContentChunk;
                
fgets($filePointer);
        }

}
 return 
$responseContent;
}

echo 
get_content("ufacars.myminicity.com"); 


Отправлено: 23:54, 08-05-2008

 

Deadooshka


Сообщения: 2511
Благодарности: 689

Профиль | Отправить PM | Цитировать


SliderVM, есть же теги [php][/php]

Цитата SliderVM:
PHP код: Выделить весь код

while ( !preg_match('/\\r\\n\\r\\n$/'$responseHeader) ); 

А зачем экраны дублированы?

Отправлено: 00:10, 09-05-2008 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Старожил


Сообщения: 313
Благодарности: 46

Профиль | Отправить PM | Цитировать


все дело в бесконечном цикле

PHP код: Выделить весь код

while ($read_length $chunk_length) {
$responseContentChunk .= fread($filePointer$chunk_length $read_length);
$read_length strlen($responseContentChunk);


там $read_length всегда 0. А я с soketами совсем незнаком. Неужели чтобы получить контент страницы надо так сложно? Прошу профи объяснить на пальцах этот метод, очень интересно

Отправлено: 11:51, 09-05-2008 | #3


Пользователь


Сообщения: 78
Благодарности: 17

Профиль | Отправить PM | Цитировать


Может так лучше??? по крайней мере работает!!!

Тут файл записыватся в массив построчно

Цитата:
if (!($arr=file("http://yandex.ru","r"))) {die("извините, сервис временно недоступен");}

$j=0;

do
{
//Код...

$j++;
}
while ($j<count($arr));
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:10, 10-05-2008 | #4


Новый участник


Сообщения: 44
Благодарности: 0

Профиль | Отправить PM | Цитировать


yandex.ru и у меня получается скопировать... А вот к примеру "ufacars.myminicity.com" так не работает Цель у меня распарсить именно "ufacars.myminicity.com".

Отправлено: 08:34, 11-05-2008 | #5


Ветеран


Сообщения: 3806
Благодарности: 824

Профиль | Отправить PM | Цитировать


заголовок темы поменяй на более соответствующий содержанию - может больше толковых советов напишут

Отправлено: 12:04, 11-05-2008 | #6


Новый участник


Сообщения: 44
Благодарности: 0

Профиль | Отправить PM | Цитировать


Название темы правильное "ufacars.myminicity.com" это только один из многих сайтов!

Отправлено: 12:10, 11-05-2008 | #7


Ветеран


Сообщения: 3806
Благодарности: 824

Профиль | Отправить PM | Цитировать


приведённый код парсит http, а html он извлекает (иногда )

Отправлено: 14:23, 11-05-2008 | #8


Новый участник


Сообщения: 44
Благодарности: 0

Профиль | Отправить PM | Цитировать


Ну а как сделать что бы извлечь код HTML?

Отправлено: 15:18, 11-05-2008 | #9


Deadooshka


Сообщения: 2511
Благодарности: 689

Профиль | Отправить PM | Цитировать


SliderVM, обрати внимание на мой пост и посуди - цикл заканчивается, когда получены все заголовки, т.о. контент не включается... (при условии, что регулярка корректно работает, в чем я не уверен)....

Отправлено: 19:24, 11-05-2008 | #10



Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » HTML parser

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Диагностика - Log Parser Как пользоватся? oren_yastreb Программное обеспечение Windows 0 30-11-2009 18:05
html simon171078 Вебмастеру 1 29-11-2008 19:07
XML parser error : not well-formed (invalid token) FADE Вебмастеру 11 24-04-2007 10:34
html 4.0 / 4.01 3kLiN Вебмастеру 9 30-08-2006 15:00
HTML Evita Вебмастеру 23 16-11-2002 20:42




 
Переход