[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Поисковик на PHP
Grievous
Здравствуйте
У меня вот такой теоретический вопрос: реально ли сделать собственнй поисковик на PHP? Что-то вроде собственного маленького яндекса или рамблера, с собственным индексом, и собственным поисковым ботом.

К чему я спрашиваю? К тому что у меня как-то давно возникла идея сделать поисковик по профильным сайтам, чтоб не все подряд индексировал, а только новое, и только узкопрофессиональное.

Я даже сделал слабенького поискового робота, который открывал указанную страницу, очищал от тэгов, записывал в тектовый файл и индексировал слова.
Но проблема в том, что этот робот более менее нормально работал только для htm страниц. А все остальные страницы (PHP ASP), которых в интернете большинство, считывались как-то криво, или вообще не считывались.

Поэтому вопрос: как можно сделать поисковик который будет нормально считывать динамические страницы? И можно ли вообще стандартными средствами PHP?




Спустя 11 минут, 22 секунды (1.02.2008 - 09:57) disc написал(а):
Сколько лет читаю форумы, но такого вопроса никогда не слышал. Попробую разсъяснить суть, PHP/ASP/ИТ.Д. динамические языки, но посетителю/веб-браузеру все равно они возвращают текст в HTML виде, которые браузеры умеют читать.

Спустя 5 часов, 36 минут, 49 секунд (1.02.2008 - 15:33) emp написал(а):

Спустя 1 час, 24 минуты, 6 секунд (1.02.2008 - 16:57) NRG написал(а):
по сути, пауком сайт проиндексировать не сложно...

я бы сделал так.

даеш пауку линк (сайт который необходимо проиндексировать)

он туда идет, считывает все внутренние линки. (чтоб было потом куда идти) =)
потом , как ты уже предложил вырезать оттуда все теги и считывать контент.

потом таким же способом проходится по всем новым линкам(которые ты вырезаеш на каждой странице).

а ну естессно записываеш ето все себе в базу (можно и в файл).

Спустя 5 часов, 15 минут, 9 секунд (1.02.2008 - 22:13) Grievous написал(а):
Спасибо за внимание.

Видимо я не совсем правильно сформулировал вопрос.

Я в курсе, что PHP и АSP сценарии выполняются на стороне сервера и никакой разницы для браузера между htm и php страницами нет.
Но дело в другом. Если попробовать открыть и записать код какой-либо страницы, скажем - главной страницы "википедии" или "яндекса", то ничего дельного из этого не выходит. В то время как примтивные страницы на "народе" мой "поисковик" открывает и считывает хорошо.

Так в чем дело, почему корректно считываются только htm страницы. И могут ли скрипты реагировать на появление поискового робота иначе чем на просмотр в браузере?

Спустя 3 дня, 16 минут, 25 секунд (4.02.2008 - 22:29) VladimirS написал(а):
Узнать о том, кто его запрашивает скрипт может из заголовка http запроса (http request headers), а именно из строки User-Agent. Но эту строку формирует ваш паук (если вообще формирует), и серверный скрипт будет вынужден полагаться на полученное значение.

Если честно, у меня подозрение, что проблема в вашем пауке. Сравните исходный код страниц "яндекса" и "народа" и попробуйте определить в чем проблема.

Еще один вариант, добавьте в паук функцию сохранения исходного кода страниц, тогда будете точно знать, что он получает :-)

Спустя 11 часов, 49 минут, 55 секунд (5.02.2008 - 10:19) Grievous написал(а):
Спасибо за помощь.

Я записывал исходный код просматриваемых страниц в текстовый документ. Некоторые он считывал нормально. А некоторые в таком вот виде:

Яндекс: привет или в таком духе (возможно связано с кодировкой)

А как сформировать строку http request headers чтобы задать название User-Agent'а который посещает страницу?

Спустя 1 день, 7 часов, 8 минут, 54 секунды (6.02.2008 - 17:28) mechanic написал(а):

Спустя 1 год, 1 месяц, 25 дней, 20 часов, 5 минут, 21 секунда (2.04.2009 - 12:33) shadowmaster63 написал(а):
Есть такая функция для проверки почты

PHP
function validemail($email) {
    if (
ereg("^([A-Za-z0-9]+_+)|([A-Za-z0-9]+\-+)|([A-Za-z0-9]+\.+)|([A-Za-z0-9]+\++))*[A-Za-z0-9]+@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$"$email))
        return 
true;
    else
        return 
false;


Но мне нужно ограничить отправку писем только на некоторые домены например яндекс и рамблер.. как это сделать?

Спустя 1 час, 34 минуты, 41 секунда (2.04.2009 - 14:08) Семён написал(а):
$rambler = substr_count($email,"@rambler.ru");
if($rambler > '0') { echo "Запрещено отсылать на почтовые ящики Rambler"; }

Спустя 1 месяц, 10 дней, 13 часов, 5 минут, 38 секунд (13.05.2009 - 03:13) KUZNEC написал(а):
а можно поделиться кодом этого паука?
я просто если чесно вообще не представляю его код, возможно изза ограниченого кол-ва функция пхп которые я знаю. но всё же если не трудно я с удовольствием почитаю в образовательных целях.

Спустя 24 дня, 14 часов, 1 минута, 35 секунд (7.06.2009 - 17:15) Анатолий написал(а):
http://webypoku.ru/view.php?sec=1&id=20 - простой понятный поисковик на php

Спустя 1 час, 8 минут, 55 секунд (7.06.2009 - 18:24) twin написал(а):
Достойна уважения попытка заработать на собственных знаниях, но вот это:
PHP
$search=trim($search);
$search=stripslashes($search);
$search=htmlspecialchars($search);
$search_t=$search;
$search=str_replace("'",""",$search);
$search=ereg_replace(" +"," ",$search);
$search=strtolower($search);
$search=trim($search);
никуда не годится. Не будет этот поисковик корректно работать.

Спустя 11 месяцев, 23 дня, 20 часов, 31 минута, 39 секунд (31.05.2010 - 14:56) Guest написал(а):
unsure.gif


_____________
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.