Тема: Perl , post
Показать сообщение отдельно

  #28  
Старый 23.02.2008, 04:49
ZET36
Участник форума
Регистрация: 08.10.2007
Сообщений: 259
С нами: 9785147

Репутация: 137
По умолчанию

как понял начало нужно написат парсер выдирающий из страницы нужное нам значение.
возбмём в пример яндэкс например нам нужно узнать значение id из этой строки (17 строка ответа)
</script><table id=head><tr> итд .....
и отправить запрос с этим значением запрос скажем запрос будет
http://www.yandex.ru/yandsearch?text=значение


Код:
use Socket;

$host="www.yandex.ru";
$port="80";

socket(SOCK, PF_INET, SOCK_STREAM, getprotobyname('tcp'));

$iaddr = inet_aton($host);
$paddr = sockaddr_in($port, $iaddr);

connect(SOCK, $paddr);
send (SOCK, "GET / HTTP/1.0\n\n", 0);

@data=<SOCK>; # ответ сервера
close(SOCK);

$fullitself=@data[17]; # считаем в какой строке ответа нужное нам значение она 17тая

@temp=split('table id=',$fullitself); # table id= это символы которые идут перед нашим значением
@semp=split('>',@temp[1]); # > а этот символ после нашего значения 
$id =  @semp[0]; # и так наше значение это переменная $id









connect(SOCK, $paddr);
send (SOCK, "GET /yandsearch?text=",$id," HTTP/1.0\n\n", 0); #отправляем запрос

@data2=<SOCK>;
close(SOCK);

 # извените если гденибуть ошибся, не проверял
но вот если позиция строки постоянно меняется в ответе нужно будет ещё писать цикл который будет находить эту строку переберая каждую в этом массиве.

но намного легче это будет реализовать в пхп так как там есть специальная функция которая исчет ключ по значению array_search(" значение", $массив);

Последний раз редактировалось ZET36; 23.02.2008 в 05:15..
 
Ответить с цитированием