Перейти к содержимому

Фотография

Автоматизированный поиск 404 на портале.


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 6

#1 Atanvarno

Atanvarno

    Новый участник

  • Members
  • Pip
  • 27 сообщений
  • ФИО:Alexander Shestov


Отправлено 24 октября 2011 - 20:15

Уважаемые коллеги, есть вопрос и проблема.
Нужна программка/тест, выцепляющая ошибки на портале
.
Ну самый простой вариант: чек 404 линков.

Алгоритм функции примерно такой - псевдоязык

функция выцеплялка404линков

{Заходим на страничку, выцепляем с неё все линки.
цикл (для каждого линка)
проверяем линк на 404
Если линк битый, добавляем его в отчёт
Если линк внутренний
Рекурсивный вызов выцеплялка404линков();

}
Проблема состоит в том, что на любой страничке портала есть ссылки и на другие страницы, например родительскую.

Таким образом мой алгоритм сейчас работает вот так:
Заходит на страничку, чекает на ней линки. Начинает проверять линки на первой дочерней страничке и... зацикливается до бесконечности, поскольку на дочерней страничке есть ссылки на родительскую.

Ничего умнее, как добавлять адреса всех страничек в массив и пробегать его каждый раз перед проверкой ссылки и вызова рекурсии я не придумал. Но это же очень-очень-очень неэффективно. Сколько будет отрабатывать такая программа? Наверняка есть более элегантные решения, и наверняка они лежат где-то на поверхности, но я пока придумать ничего не могу. :help:
  • 0

#2 luk

luk

    Новый участник

  • Members
  • Pip
  • 5 сообщений
  • ФИО:Даниленко Артем Сергеевич

Отправлено 24 октября 2011 - 21:03

Если у Вас на сайте не 100000 страниц, то медленности вы даже не заметите...

Сам алгоритм мне кажется не улучшишь.

Если просто хочется чтобы быстрее, то можно использовать такие структуры как хеш-таблицы, если конечно язык на котором Вы пишете их реализовывает. В качестве хеш-функции нужно будет что-то придумать или опять же использовать возможности языка.

К примеру для С# hashtable и Хеш-функция
  • 1

#3 popo_kid

popo_kid

    Активный участник

  • Members
  • PipPip
  • 79 сообщений

Отправлено 25 октября 2011 - 05:59

главное не забудьте все это запустить во много потоков.
ИМХО, алгоритм обхода не играет особо важной роли, т.к. все в конечном итоге упрется в производительность веб сервера

PS: а вы уже погуглили на предмет существования готового решения ?
  • 0

#4 OVA

OVA

    Опытный участник

  • Members
  • PipPipPipPip
  • 405 сообщений
  • ФИО:Высоцкий Сергей Павлович
  • Город:Новосибирск

Отправлено 25 октября 2011 - 07:14

Линкчекеров тысячи. Ровно как и кастомизируемых опенсорсных кравлеров под разные нужды.
  • 0

#5 ch_ip

ch_ip

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 097 сообщений
  • ФИО:Павел Абдюшев
  • Город:Москва


Отправлено 25 октября 2011 - 09:16

Линкчекеров тысячи. Ровно как и кастомизируемых опенсорсных кравлеров под разные нужды.

Увы, продуманных и бесплатных не так много. А уж тех, где было бы продумано не только получение первичной информации, но и хотя бы на шаг вперед - ее использование для последующих запусков пока не встречал. Буду очень благодарен, если поделитесь ссылками.
Это не говоря уже про заморочки с аяксом и файлами.
Понравилось то, что делают ребята из Яндекса (рассказывали на последнем YaC), но они пока код никуда не выложили вроде.
  • 0

#6 ch_ip

ch_ip

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 097 сообщений
  • ФИО:Павел Абдюшев
  • Город:Москва


Отправлено 25 октября 2011 - 09:18

Уважаемые коллеги, есть вопрос и проблема.
Нужна программка/тест, выцепляющая ошибки на портале

В первом приближении Xenu решит ваши текущие проблемы
  • 0

#7 OVA

OVA

    Опытный участник

  • Members
  • PipPipPipPip
  • 405 сообщений
  • ФИО:Высоцкий Сергей Павлович
  • Город:Новосибирск

Отправлено 25 октября 2011 - 09:54


Линкчекеров тысячи. Ровно как и кастомизируемых опенсорсных кравлеров под разные нужды.

Увы, продуманных и бесплатных не так много. А уж тех, где было бы продумано не только получение первичной информации, но и хотя бы на шаг вперед - ее использование для последующих запусков пока не встречал. Буду очень благодарен, если поделитесь ссылками.
Это не говоря уже про заморочки с аяксом и файлами.
Понравилось то, что делают ребята из Яндекса (рассказывали на последнем YaC), но они пока код никуда не выложили вроде.

http://crawljax.com/

Тащемта из него идея Яндекса в какой-то мере и выросла, насколько я понял (по крайней мере когда Артем в нашу тайгу приезжал и очень болел на тему проверки верстки и т.п. бурно интересовался crawljax'ом после моего доклада об этом ништячке и мы с ним обсуждали примерно то что на YaC он потом запилил). И я даже не очень уверен что Яндекс его в какой-то мере не используют.

Более того, некий Julian Harthy уже почти год колесит с рассказами о том как они на eBay через Crawljax себе хорошего запилили.

ЗЫ: Я в принципе на досуге из него себе примус починяю, но скорее в рамках развлечений. Есичо могу порассказывать где что брать и откуда копать.

ЗЗЫ: А можно вообще не извращаться и просто Xenu скриптиками обернуть. Для ряда упомянутых задач более чем сойдет.
  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных