Поисковые черви или система паутинного поиска
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
Поисковые черви или система паутинного поиска - 2007-12-18 21:43:44.956666
|
|
|
7bios
Сообщений: 50
Оценки: 0
Присоединился: 2007-12-18 21:18:00.596666
|
Я хочу написать "поискового черьвя", который бы индексировал разнообразные странички, как, к примеру, поисковая система гугл, и что бы лазил не только по страницам типа html и php, но и к просто всем файлам на сайте, к которым открыт свободный доспут, причём адрес сайта-жертвы заранее не известен, а определяется так: сканируется HTML содержание страницы из него выбераются слова что начинаються с www или http:// и эта ссылка становится следующей жертвой и так по паутинке. Я хочу сделать чтобы этот скрипт работал автономно тоесть наверно на кроне. Кто что слышал или читал о таком чуде техники прозьба напишите сюда, а в случае если меня в шестой раз забанят присылайте ваши месаги на [email=7bios@bk.ru]7bios@bk.ru[/email]
|
|
|
RE: Поисковые черви или система паутинного поиска - 2007-12-18 22:09:23.356666
|
|
|
graf_Otodrakula
Сообщений: 23
Оценки: 0
Присоединился: 2007-12-02 13:06:27.390000
|
так что тебе мешает? на половину готовых скриптов в сети до фига. умей строить запрос что бы найти то что нужно
|
|
|
RE: Поисковые черви или система паутинного поиска - 2007-12-18 23:06:41.990000
|
|
|
Bios_inside
Сообщений: 626
Оценки: 0
Присоединился: 2007-02-23 10:44:18.170000
|
quote:
ORIGINAL: graf_Otodrakula так что тебе мешает? на половину готовых скриптов в сети до фига. умей строить запрос что бы найти то что нужно это всё пустые слова. Что-то по делу можеш предложить?
|
|
|
RE: Поисковые черви или система паутинного поиска - 2007-12-19 04:45:06.116666
|
|
|
Lex_Voodoo
Сообщений: 7328
Оценки: 0
Присоединился: 2004-12-07 13:55:12
|
Ну писал я такое. curl/sockets + regex + MySQL и как ты верно заметил crontab. Ты же всё правильно описал, открывай PHP Expert Editor и вперёд с песней, в чём суть вопроса-то?
|
|
|
RE: Поисковые черви или система паутинного поиска - 2007-12-19 08:18:27.813333
|
|
|
Bios_inside
Сообщений: 626
Оценки: 0
Присоединился: 2007-02-23 10:44:18.170000
|
quote:
ORIGINAL: Lex_Voodoo Ну писал я такое. curl/sockets + regex + MySQL и как ты верно заметил crontab. Ты же всё правильно описал, открывай PHP Expert Editor и вперёд с песней, в чём суть вопроса-то? нету опыта в написании подобного рода скриптов. Хотелось бы посмотреть исходнички какие-то или почитать статьи, что бы знать с чего начать. Чат писал, форум писал, сервер статистики писал, смс бота писал, а вот с поисковым ботом дела не имел. Ксатати а почему именно curl? Разве на РНР нельзя?
|
|
|
RE: Поисковые черви или система паутинного поиска - 2007-12-19 09:59:21.650000
|
|
|
oRb
Сообщений: 4044
Оценки: 597
Присоединился: 2007-03-28 18:45:06.630000
|
На, халявЩЕГ). Писал больше года назад. так что местами там кривотня. Через день работы он вылетит от переполнения стека. (по идее, так сам не пробовал). Если приложешь чуточку времени, то вполне сможешь поправить алгоритм. Удачи! <?php
function crawler_GetContent($content) //--{ Загружает страницу }--
{
$ch = curl_init();
$options = array(CURLOPT_URL => $content,
CURLOPT_REFERER => $content,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HEADER => false,
CURLOPT_USERAGENT => "oRBCrawler/1.0 (compatible; Win16;)",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30
);
curl_setopt_array($ch, $options);
$file = curl_exec($ch);
$error = curl_errno($ch);
if ( !$error )
{
curl_close($ch);
return $file;
}
else
{
curl_close($ch);
return "error: ".$error;
}
}
function crawler_MakeUrl($url, $href) //--{ Создает URL адрес }--
{
if ( strpos($url, "://") === false )
$url = "http://".$url;
if ( strpos($href, "://") !== false ) // АБСОЛЮТНЫЕ ССЫЛКИ //
return $href;
if ( ($href[0] == "/") or ($href[0] == "\\") ) // КОРНЕЗАВИСИМЫЕ //
{ // ССЫЛКИ //
$url = crawler_GetHostByUrl($url);
return $url.substr($href, 1, strlen($href) - 1);
}
else // ДОКУМЕНТОЗАВИСИМЫЕ //
{ // ССЫЛКИ //
$host = crawler_GetHostByUrl($url);
$path = substr($url, strlen($host), strlen($url));
$int = strpos($path, ".");
if ( $int !== false )
$path = substr($path, 0, $int);
else
$path = (substr($path,-1)=='/' || empty($path)) ? $path:$path.'/';;
$path = substr($path, 0, strrpos($path, "/"));
return $host.$path.$href;
}
}
function crawler_GetHostByUrl($url) //--{ Возвращает имя домена исходя из Url }--
{
if ( strpos($url, "://") === false )
$url = "http://".$url;
$slashes = substr_count($url, "/");
if ( $slashes == 2 )
{
return $url."/";
}
else
{
$offset = 0;
for($i=0; $i<3; $i++)
$offset = strpos($url, "/", $offset+1);
$url = substr($url, 0, $offset+1);
return $url;
}
}
function crawler_IsInBase($url)
{
$result = mysql_query("SELECT url FROM pages WHERE url='".mysql_real_escape_string($url)."' LIMIT 0, 1");
if ( mysql_num_rows($result) == 1 )
return true;
else
return false;
}
function crawler_InsertInDB($url, $page)
{
$url = mysql_real_escape_string($url);
$page = mysql_real_escape_string($page);
$date = date("Y-m-d H:i:s");
mysql_query("INSERT INTO pages (url, page, crawlerdate) VALUES ('{$url}', '{$page}', '{$date}')");
}
function crawler_Go($start_url)
{
global $main_url;
if ( strpos($start_url, $main_url) === false )
return false;
echo $start_url."\n";
$text = crawler_GetContent($start_url);
crawler_InsertInDB($start_url, $text);
if ( preg_match_all("!<a[^>]*href\s?=\s?[\"']?([^\"'\s#>]*)[^>]?>!i", $text, $matches) )
{
$matches = $matches[1];
$array_items = count($matches);
for ($i=0; $i<$array_items; $i++)
{
if ( substr($matches[$i], 0, 7) == "mailto:" )
continue;
if ( $matches[$i] != "/")
{
$matches[$i] = crawler_MakeUrl($start_url, $matches[$i]);
if ( !crawler_IsInBase($matches[$i]) )
crawler_Go($matches[$i]);
}
}
$matches = null;
}
}
ob_implicit_flush();
set_time_limit(0);
require_once("sql_connect.php");
$main_url = "news.sobaka.biz";
crawler_Go($main_url);
echo "\n\n\nEND";
?>
|
|
|
RE: Поисковые черви или система паутинного поиска - 2007-12-19 10:03:52.213333
|
|
|
Bios_inside
Сообщений: 626
Оценки: 0
Присоединился: 2007-02-23 10:44:18.170000
|
спасибо и на этом
|
|
|
|
|