Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   Выявление изменений Web-Site (http://forum.oszone.net/showthread.php?t=48845)

schumi 02-05-2005 19:22 320999

Выявление изменений Web-Site
 
Всем привет!
Хотелось бы узнать у профи как написать и на чём (РНР, Java Script, Java) такую маленькую программку, которая могла бы сравнивать содержимое определенного сайта на определенные изменения. Попробую точнее. Думаю что лучше написать ее на PHP, чтобы не быть привязанным к локальной машине. Обладаю знаниями в PHP и Java, но к сожалению неглубокими. Позабывал уже все.

Vlad Drakula 02-05-2005 22:18 321037

schumi
ну.... а по подробнее?

schumi 03-05-2005 02:15 321075

есть сайт такой по продаже автомобилей www.mobile.de. Я хочу сделать так, чтобы как только новая машина появится программа давала бы мне сигнал. Т.е. сравнивала бы эту страничку с предыдущей, ну скажем, каждый час.

vadimiron 03-05-2005 03:09 321081

Может сделать проще: у них есть Suchauftrag, то есть вам на почту будут приходить все новые интересующие вас модели. Лучше того, как работает их система оповещения, всё равно сделать нельзя.

schumi 03-05-2005 11:25 321150

vadimiron
Да есть, но почта от них приходит не как раньше, сразу, а только раз в день. :-(

vadimiron 03-05-2005 13:52 321214

Вообще такой скрипт представляет, для меня по крайней мере, большую сложность, и вот почему:
во первых, данные у них хранятся естественно не в виде статических ХТМЛ страниц, а в базе данных, то есть надо как то самому симулировать запрос, то есть скрипт должен как бы "виртуально" заполнять форму поиска и отправлять эти данные скрипту обработчику. Скрипт найти не сложно, в коде страницы поиска видим следущее:
HTML код:

<FORM enctype="application/x-www-form-urlencoded" method="GET" action="http://www.mobile.de/SIDweksNCWCgNA2xmi69O7uDA-t-vaNexlCsAsCsK%F3P%F3R~BmSB11LsearchPublicJ1115116865A1LsearchPublicD1100CCarS-t-vpLtt~BmPA1B20A0k-t-vSeVb_X_Y_x_y~BSRA6CPKWHinPublicA2A0A0A0/cgi-bin/searchPublic.pl" name="search">
                <INPUT value="search" name="_form" type="HIDDEN">

Значение action дано, здесь надо только уметь выделить номер сессии, который даётся каждому "зашедшему"
Единственно, что тут приятное, так это метод GET, то есть данные передаются скрипту поиска через адресную строку, что значит, что мы с большой долей вероятности можем генерировать правильные запросы, только как строятся запросы через адресную строку у них-надо сначало изучить, но это делается простым пробыванием.

Вторая проблема: предположим мы научились строить запросы, теперь же надо обрабатывать результаты, а это значит использование в большом количестве медленных функций по работе со строками, то есть искать типичные куски кода (при этом при даже небольшом изменении дизайна нужно также подправлять код скрипта), и в них искать описание машины (надо ещё учесть, что все результаты поиска никогда не выводятся на одной странице, но номер страницы, который сейчас отображается, я думаю, также передаётся через адресную строку)

В качестве заключения: мне кажется это работа очень большая - но вполне реализуемая, было бы желание

возможно, всё подругому....надеюсь кто нибудь ещё выскажется

schumi 03-05-2005 14:26 321223

Цитата:

(при этом при даже небольшом изменении дизайна нужно также подправлять код скрипта),
в принципе, думаю, можно не сравнивать страничку целиком, а только определенную часть кода, чтобы от дизайна сильно не зависеть?

А может можно как-нибудь к стандартной функции в IE прикрутить, пусть локально работает.

Vlad Drakula 03-05-2005 15:21 321236

schumi
Цитата:

А может можно как-нибудь к стандартной функции в IE прикрутить, пусть локально работает.
что и куда вы собираетесь прикручивать?

schumi 03-05-2005 16:57 321279

Vlad Drakula
Я имел ввиду если занести ее в избранное и сделать доступной автономно. Там есть "при изменении сообщить на e-mail"

Vlad Drakula 03-05-2005 18:23 321310

schumi
честно говоря я не силен в настройках и фичах эксплорера...

я бы сел и написал скрипт на php...

schumi 03-05-2005 20:00 321334

Vlad Drakula
я бы тоже :) Только вот даже не знаю с чего начать.
Значит на РНР все-таки?! За это уже спасибо! :beer: Не подскажешь где почитать описания функций PHP на русском?

Vlad Drakula 03-05-2005 20:50 321348

schumi
на сайте http://php.net можно скачать офичиальное русское руководство!

E-mail 11-05-2005 00:13 323117

PHP код:

<?php 
// Подключаем PEAR::Cache_Lite 
require_once 'Cache/Lite.php'

// Определяем настройки Cache_Lite 
$options = array( 
'cacheDir' => './cache/' 
); 



// Инициализируем Cache_Lite 
$cache = new Cache_Lite($options); 



// Некоторые фиктивные данные для хранения
$id 'MyCache';



// Инициализируем кэш, если страница запрошена впервые
if (!$cache->get($id)) { 
$cache->save('Dummy'$id); 




// Рандомизатор…
$random = array(011); 
shuffle($random); 



// Произвольное обновление кэша
if ($random[0] == 0) { 
$cache->save('Dummy'$id); 




// Получаем время последней модификации кэш-файла
$lastModified filemtime($cache->_file); 



// Выдаём заголовок HTTP Last-Modified
header('Last-Modified: ' gmdate('D, d M Y H:i:s'$lastModified) . ' GMT'); 



// Получаем заголовки запроса клиента – только для Apache
$request getallheaders(); 



if (isset(
$request['If-Modified-Since'])) { 
// Разделяем If-Modified-Since (Netscape < v6 отдаёт их неправильно) 
$modifiedSince explode(';'$request['If-Modified-Since']); 



// Преобразуем запрос клиента If-Modified-Since в таймштамп
$modifiedSince strtotime($modifiedSince[0]); 
} else { 
// Устанавливаем время модификации в ноль
$modifiedSince 0




// Сравниваем время последней модификации контента с кэшем клиента
if ($lastModified <= $modifiedSince) { 
// Разгружаем канал передачи данных!
header('HTTP/1.1 304 Not Modified'); 
exit(); 



echo 
'Сейчас ' gmdate('H:i:s') . ' по Гринвичу<br />'
echo 
'<a href="' $_SERVER['PHP_SELF'] . '">Обновить</a><br />'
?>

Vlad Drakula ты меня откровенно радуешь -lol-


Время: 08:34.

Время: 08:34.
© OSzone.net 2001-