- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Все что нужно знать о DDоS-атаках грамотному менеджеру
И как реагировать на "пожар", когда неизвестно, где хранятся "огнетушители
Антон Никонов
rammlied, ага, сделайте сначала карту сайта. например: www.123people.com . посмотрите site в google
rammlied, это нерационально: в этом случае придётся дваждый пройтись по всему сайту (во время составление карты сайта и когда надо будет найти нужные страницы). Вариант сохранять все страницы во время составления карты тоже уныл. Необходимо составлять карту сайта и проверять скачанные страницы одновременно.
Общий алгоритм примерно таков:
1) загружаем страницу.
2) извлекаем все внутренние ссылки (как это сделать - дело вкуса)
3) добавляем эти ссылки в очередь на загрузку
4) загруженную страницу передаём нашему обработчику, который проверить что нужно и если что занесёт в базу некие "сведения".
Всё это делать необходимо асинхронно; естественно необходимо параллельно вести список всех уже загруженных и поставленных в очередь на загрузку страниц, а перед добавлением найденной ссылки в очередь проверять, не скачана или не поставлена в очередь такая же страница.
p.s. с php не работаю и не работал, как и с помощью каких инструментов это реализовать - не подскажу.
Хоть ТС и сказал мне не помогать далее, разовью идею с сайтмэпом.
Ищём готовый скрипт генерации карты, в цикл вставляем вызов функции парсера. Всё.
Ну а отдельно стоящий парсер просто делается.
Создаём двухмерный массив. В первой колонке URL, во второй статус.
Извлекаем ссылки с текущей страницы, добавляем в массив.
Каждый раз перетряхиваем его на предмет дубликатов.
Далее идём по ссылкам из массива.
После загрузки каждой страницы ставим статус "ОК".
Тем не менее, так и не понял, что нужно изначально — алгоритмы или их реализацию? ТС вроде как дружит и с тем, и с другим. Просто поговорить?
1.Сканирование страницы и сбор ссылок с укладыванием в массив
2.Уникализация массива
4. Проверка на наличие непосещенной страницы для выхода из цикла.
3.Проход по ссылкам из массива, с пометкой о посещении, возврат на п.1
Минус- неоптимально
Плюс - простота решения
возможен вариант, когда на первой странице нет ссылок.
Делаем также как sape индексирует сайты:
сначала парсим ссылки на главной странице - заносим их в отдельный файл, называем его url1.txt
когда ссылки с главной спарсились, начинаем парсить все ссылки как раз из файла - url2.txt, то есть третий уровень,
при этом когда ссылки спарсились скрипт проверяет на уникальность строк, чтобы удалить все дубли - создайте такую функцию отдельно.
Ссылки в файле url2.txt - это и есть вся карта сайта
Если хотите парсить глубже, что не оч советую (будет долго), тогда парсите все ссылки с url2.txt в url3.txt и так далее.
Использовать БД - это извращение ИМХО
Там всё в оперативе можно держать…
Да, решений много конечно, но вас немного не туда понесло, хотя всех благодарю еще раз, за отзывчивость. Сайт, с которого будет происходить парсинг постоянно обновляется. Поэтому формирования единого сайтмапа не рационально. Парсинг будет бесконечным. Т.е. по сути дела, нужен небольшой бот - индексатор. Но при индексировании он не должен запоминать ключевых слов и урлы к этим ключам, как у поисковых систем. А всего навсего:
Проверка страницы - занесение фрагмента этой страницы в индекс - отображение пользователю.
Недавно вот прочел (тут), что реализовывать такую идею на php не стоит. Все ядро советуют делать на C, а веб-интерфейс на php.
Хотелось бы еще спросить, на чем написаны индексаторы Яндекса и Гугла. Возможно, выберу именно их язык, ведь он уже проверен. Основная задача будущего парсера - гулять по страницам, сравнивать, заносить в бд. Парсер должен быть сравнительно быстрым (заносить примерно 50 - 100 страниц в день). 100 страниц в день - не так уж много, но вы не забывайте что это число для занесения в бд, проверятся всего будет примерно около 2000 - 4000 страниц в день.
С удовольствием выслушаю ваши предположения и мысли. Еще раз спасибо за помощь.
P.S.: числа выше - стартовые, со временем они увеличатся.
делайте на том языке программирования, который знаете.
10000 страниц в день это вообще ни о чём, справится любой язык
Это не скорость - это черепаха.
Это не объем.
загрузив скриптом страницу =- вы загружаете всего лишь одну страницу без каких-либо других элементов (стили, изображения, скрипты)
Отпарсив одну страницу и собрав ссылки - вы сканируете на наличие только одной страницы. И...
Так что смело укладывайте ссылки в базу, помечайте их"проиндексированными" и каждый день запускайте свой парсер.
Язык парсера - безразличен.
Парсер должен работать без выключения и всегда выполнять свою работу, еще раз подчеркну, сайт постоянно обновляется, следовательно и парсер должен работать постоянно. В принципе, если php для такого количества подходит, то буду использовать его. Правда ума не приложу как эти курлы заставить по ссылкам переходить.