Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

Скрипт простейшего анализа HTML-документа. (DmitriyPopov)
Author Message
DmitriyPopov
Участник форума



Joined: 10 Mar 2003
Posts: 1491
Карма: 22
   поощрить/наказать


PostPosted: Mon Mar 15, 2004 2:55 pm ()
   Post subject: Скрипт простейшего анализа HTML-документа.
Reply with quote

Собственно, пока что простой класс, по обработке страницы.
Скрипт пишется как часть более крпной системы, и является частью поискового робота.

Умеет находить:
Все ссылки на странице. Пока что это три типа:
1)<a href="">
2) <frame src="">
3)<area href="">

(скажите, какие еще часто варианты встречаются).

Находит тег <base>.
Сопостовляет базовый тег со ссылкой, и учитвая различные возможные варианты выдает полную ссылку.
Находит теги <meta name="" content=""> и возвращает их содержимое.

Пример того, как работать:
Code (php): скопировать код в буфер обмена
<?php
set_time_limit (www.php.net/set_time_limit)(500);

include_once("LinkSearcher.php");

$linksearch = new MyServerLinkSearcher();


function FileRead($file){
   
    ob_start (www.php.net/ob_start)();
    readfile (www.php.net/readfile)($file);
    $file = ob_get_contents (www.php.net/ob_get_contents)();
    ob_end_clean (www.php.net/ob_end_clean)();
   
    return $file;
   
}

$file = FileRead("http://www.site.com/");


$links = $linksearch -> getLinks($file,'http://www.site.com');





ob_start (www.php.net/ob_start)();
print_r (www.php.net/print_r)($links);
$ob = ob_get_contents (www.php.net/ob_get_contents)();
ob_clean (www.php.net/ob_clean)();
echo (www.php.net/echo) nl2br (www.php.net/nl2br)(htmlspecialchars (www.php.net/htmlspecialchars)($ob));
Этот срикпт вернет массив полных ссылок на главной странице www.site.com.
Остальные функции смотрите в коде - там есть комментарии.


LinkSearcher_v0_2.zip
 Description:
MyServerLinkSearcher version 0.2

Download
 Filename:  LinkSearcher_v0_2.zip
 Filesize:  2.55 KB
 Downloaded:  751 Time(s)



Last edited by DmitriyPopov on Wed May 05, 2004 9:22 am; edited 1 time in total
Back to top
View user's profile Send private message
DmitriyPopov
Участник форума



Joined: 10 Mar 2003
Posts: 1491
Карма: 22
   поощрить/наказать


PostPosted: Mon Mar 15, 2004 2:59 pm (спустя 3 минуты)
   Post subject:
Reply with quote

Кстати, в следующей версии, он будет уметь:
Возвращать значение тега title, и возвращать только ссылки с указанного сервера, и с указанных протоколов.
Back to top
View user's profile Send private message
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 198
   поощрить/наказать

Location: 007 495

PostPosted: Mon Mar 15, 2004 4:42 pm (спустя 1 час 42 минуты)
   Post subject:
Reply with quote

Дмитрий Попов:
Подезная штуковина, сделай так, чтобы она base href тоже учитывала, а то с ЧПУ она боюсь иначе не подружится :)
Back to top
View user's profile Send private message Send e-mail
DmitriyPopov
Участник форума



Joined: 10 Mar 2003
Posts: 1491
Карма: 22
   поощрить/наказать


PostPosted: Mon Mar 15, 2004 5:31 pm (спустя 49 минут)
   Post subject:
Reply with quote

yUAC:
Дык она и учитыает =)
Back to top
View user's profile Send private message
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 198
   поощрить/наказать

Location: 007 495

PostPosted: Mon Mar 15, 2004 5:58 pm (спустя 26 минут)
   Post subject:
Reply with quote

Дмитрий Попов:
Да, извини, не заметил функцию GetBaseHref... Вообще говоря алгоритм гораздо лучше продуман, чем я делал для своего поисковика :). Надо будет букмарку поставить :).
Back to top
View user's profile Send private message Send e-mail
7.3.
Участник форума



Joined: 01 Nov 2003
Posts: 1142
Карма: 37
   поощрить/наказать


PostPosted: Mon Mar 15, 2004 6:18 pm (спустя 19 минут)
   Post subject:
Reply with quote

Дмитрий Попов wrote:
скажите, какие еще часто варианты встречаются
Очень часто бывает <iframe>.
Back to top
View user's profile Send private message
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 198
   поощрить/наказать

Location: 007 495

PostPosted: Mon Mar 15, 2004 6:44 pm (спустя 25 минут)
   Post subject:
Reply with quote

7.3.:
Там это уже есть, вроде (или просто frame).
Back to top
View user's profile Send private message Send e-mail
DmitriyPopov
Участник форума



Joined: 10 Mar 2003
Posts: 1491
Карма: 22
   поощрить/наказать


PostPosted: Tue Mar 16, 2004 10:14 am (спустя 15 часов 30 минут)
   Post subject:
Reply with quote

Да, там есть frame, а про iframe я забыл...
Пишу в todo-list к версии 0.2
Back to top
View user's profile Send private message
DmitriyPopov
Участник форума



Joined: 10 Mar 2003
Posts: 1491
Карма: 22
   поощрить/наказать


PostPosted: Tue Mar 16, 2004 10:17 am (спустя 3 минуты)
   Post subject:
Reply with quote

Кстати, если надо Вы можете, пока что и сами добавить поиск по iframe. Для этого надо просто добавить соответствующий массив свойству класса "pregLinks", который будет содержать один элемент с ключем "regEX" - само регулярное выражение и "pocket" - карман, в котором искать совпадение.
Back to top
View user's profile Send private message
DmitriyPopov
Участник форума



Joined: 10 Mar 2003
Posts: 1491
Карма: 22
   поощрить/наказать


PostPosted: Tue Mar 16, 2004 10:19 am (спустя 2 минуты)
   Post subject:
Reply with quote

Хех.. Это еще ничего... Вот когда сам поиск сделаю, вот это будет да =).

P.S. Люблю, когда заказчик платит за то, что самому хочется сделать, да еще и разрешает потом бесплатно распространять, с условием поддержки =).
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 414
   поощрить/наказать


PostPosted: Thu Mar 18, 2004 2:22 am (спустя 1 день 16 часов 2 минуты)
   Post subject:
Reply with quote


М

Украли функцию! :-) (forum.dklab.ru/php/heap/UkraliFunktsiyu-.html)
Back to top
View user's profile Send private message Send e-mail
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 198
   поощрить/наказать

Location: 007 495

PostPosted: Mon May 03, 2004 5:45 pm (спустя 1 месяц 16 дней 15 часов 22 минуты)
   Post subject:
Reply with quote

Дмитрий Попов:
Эм... Слушай, а не подскажешь, как ему указывать, что начальная страница - папка, например site.com/films/ он все равно интерпретирует как www.site.com и считает, что все ссылки идут из корня... ?
Back to top
View user's profile Send private message Send e-mail
DmitriyPopov
Участник форума



Joined: 10 Mar 2003
Posts: 1491
Карма: 22
   поощрить/наказать


PostPosted: Wed May 05, 2004 9:25 am (спустя 1 день 15 часов 40 минут)
   Post subject:
Reply with quote

Загрузил новую версию. Новое:
1) Работает со ссылками, в которых извращенцы-Webмастера прописывают внутри пути отноительные пути (aka "/dsds/sadsd/../sdasd/./asdasd..//");
2) Исправлена ошибка - все относительные ссылки (aka "../ или ./") строились почему-то от корня, а не от текущей страницы
Back to top
View user's profile Send private message
DmitriyPopov
Участник форума



Joined: 10 Mar 2003
Posts: 1491
Карма: 22
   поощрить/наказать


PostPosted: Wed May 05, 2004 9:25 am (спустя 28 секунд)
   Post subject:
Reply with quote

yUAC:
Качай =)
Back to top
View user's profile Send private message
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 198
   поощрить/наказать

Location: 007 495

PostPosted: Wed May 05, 2004 9:34 am (спустя 9 минут)
   Post subject:
Reply with quote

Дмитрий Попов:
Поздно, я уже сделал свою мега-уродскую систему, но которая зато работает на мега-ламерских сайтах нашей локальной сети... (А там даже есть ссылки без кавычек, типа <a href=index.php !), ты этого не учел :)
Back to top
View user's profile Send private message Send e-mail
Display posts from previous:   
Post new topic   Reply to topic All times are GMT + 3 Hours
Page 1 of 1    Email to a Friend.
You cannot post new topics in this forum. You cannot reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You can download files in this forum.
XML