Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Робот переходящий по ссылкам
 
 автор: P@Sol   (04.05.2006 в 17:35)   письмо автору
 
 

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

   
 
 автор: Unkind™   (04.05.2006 в 19:55)   письмо автору
 
   для: P@Sol   (04.05.2006 в 17:35)
 

http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=16929&page=1 - а эта тема ниже вашей где-то на 15 строчек...=)

   
 
 автор: ZetRider   (04.05.2006 в 20:17)   письмо автору
 
   для: Unkind™   (04.05.2006 в 19:55)
 

вот :
<?
for ($start=0, $end=9; $start <= $end; $start++) {

file_get_contents("http://www.site.ru/index.php");
}
?>

   
 
 автор: CrazyAngel   (05.05.2006 в 03:35)   письмо автору
 
   для: ZetRider   (04.05.2006 в 20:17)
 

Вот паук, непомню кто-то уже выкладывал его на этом форуме =)


CREATE TABLE search_index (
uri varchar(255) NOT NULL default '',
title text NOT NULL,
description text NOT NULL,
text mediumtext NOT NULL,
UNIQUE KEY (uri),
FULLTEXT KEY (text)
) TYPE=MyISAM;

Паук:

<?php
$indexed
=array(); // массив, где мы отмечаем уже проиндексированные страницы
// $uri - стартовый адрес
function spider($uri='/'$depth=0){
global 
$indexed;
// URI уже проиндексирован, пропускаем
if($indexed[$uri]) return;
// удаляем из кэша старую версию рассматриваемого URI
mysql_query("delete from search_index where uri='".mysql_real_escape_string($uri)."'");
// формируем URL для вызова страницы сайта по HTTP
$url='http://'.$_SERVER["HTTP_HOST"].$uri;
// берем мета-теги. Для упрощения работы у нас сайт заголовок записывает не только в <title>, то и <meta name="title">
$meta=@get_meta_tags($url);
// либо ошибка, либо не документ. Пропускаем
if(!$meta) return;
// тут еще один момент для оптимизации. Мы 2 раза запрашиваем страницу, т. к. get_meta_tags не может работать со строкой, только с файлом. Можно один раз вызвать страницу по HTTP и сохранить в локальный файл.
$content=file_get_contents($url);
// чистим контент от тегов и html-entity (и заодно от повторяющихся пробелов)
$text=preg_replace('/(s+)|(&[a-zA-Z0-9#]+icon_wink.gif/'' 'strip_tags($content));
// записываем данные по URI в индекс
mysql_query("insert into search_index set
uri='"
.mysql_real_escape_string($uri)."',
title='"
.mysql_real_escape_string($meta['title'])."',
description='"
.mysql_real_escape_string($meta['description'])."',
text='"
.mysql_real_escape_string($meta['title']."
"
.$page['description']."
"
.$text)."'");
// отмечаем в массиве, что этот URI мы проиндексировали
$indexed[$uri]=true;
// теперь делаем обход ссылок
// тут опять поле для оптимизаторства: мы здесь удаляем все теги кроме <A> и выбираем все, что идет после href= и заключено в двойные или одинарные кавычки
if($depth<3){
// если мы не слишком глубоко углубляемся в рекурсию
$links=split("href=",strip_tags($content,'<a>'));
foreach(
$links as $link){
$f=substr($link,0,1);
$link=substr($link,1);
if(
$f=='"' || $f=="'"){
$link=substr($l,0,strpos($link,$f));
// пропускаем ссылки, начинающиеся на http://, ja<b>
if(strpos($link,'http://')===|| strpos($link,'https://')===|| strpos($link,'ja<b>
}else{
//пропускаем ссылки без кавычек
continue;
}
// приводим ссылку к абсолютному виду
// тут тоже можно пооптимизировать
$diez=strpos($link,'
#');
if($diez!==null){
$link=substr($link,0,$diez);
}
if(
substr($link,0,1)!='/'){
$link=$uri.$link;
}
// рекурсивный вызов паука на очередную ссылку
spider($link$depth+1);
}
}
}
// начальный вызов паука на корень сайта. Можно начинать его работу, например, и с карты сайта.
spider('/');
// оптимизируем таблицу индекса, а то она знатно раздувается.
db_query('optimize table search_index');
?>

   
 
 автор: P@Sol   (05.05.2006 в 10:19)   письмо автору
 
   для: CrazyAngel   (05.05.2006 в 03:35)
 

CrazyAngel, что то в этом есть

   
 
 автор: P@Sol   (05.05.2006 в 09:49)   письмо автору
 
   для: ZetRider   (04.05.2006 в 20:17)
 

ZetRider, начало положено:)

   
 
 автор: P@Sol   (05.05.2006 в 09:48)   письмо автору
 
   для: Unkind™   (04.05.2006 в 19:55)
 

это совсем другое!!!

   
 
 автор: CrazyAngel   (05.05.2006 в 10:24)   письмо автору
 
   для: P@Sol   (05.05.2006 в 09:48)
 

Как? он собирает все ссылки с адруса, все емайлы, потом по ссылкам переходит

   
 
 автор: P@Sol   (05.05.2006 в 11:09)   письмо автору
 
   для: CrazyAngel   (05.05.2006 в 10:24)
 

это предложение было для Unkind™

   
 
 автор: CrazyAngel   (05.05.2006 в 11:25)   письмо автору
 
   для: P@Sol   (05.05.2006 в 11:09)
 

=), понятно

   
 
 автор: P@Sol   (10.05.2006 в 09:34)   письмо автору
 
   для: CrazyAngel   (05.05.2006 в 11:25)
 


// пропускаем ссылки, начинающиеся на http://, ja<b> 
if(strpos($link,'http://')===0 || strpos($link,'https://')===0 || strpos($link,'ja<b> 
}else{ 
//пропускаем ссылки без кавычек 
continue; 


1.тут что то пропущено..

2.при запуске пишет, что конец у этого кода не ожиданный:( по скобкам все ок...где ошибка не понимаю:(

   
 
 автор: Unkind™   (05.05.2006 в 13:47)   письмо автору
 
   для: P@Sol   (05.05.2006 в 11:09)
 

P@Sol, я ваш первый пост не читал фактически...=))

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования