Как легко и красиво собрать карту сайта?!

  • Автор темы Автор темы kyrtoff
  • Дата начала Дата начала

kyrtoff

Client
Регистрация
07.06.2012
Сообщения
34
Реакции
22
Баллы
8
Привет, Всем.
Я расскажу про свой шаблон, который позволит собирать карту любого сайта, не цепляя при этом какие-то другие внешние ссылки.
Также в шаблоне можно будет редактировать уровень вложенности, с какой страницы можно начать парсинг, и по какому именно домену собирать ссылки. Можно например собирать только ссылки поддомена.

Вид шаблона целиком:
D.png


Шаблон взаимодействует с тремя файлами:
A.png


temp.txt - содержит формат "ссылка для дальнейшей обработки;её уровень вложенности"
blacklist.txt - содержит "обработанная ссылка", чтобы не повторять обработку одних и тех же ссылок многократно
result.txt - содержит "ссылка|титл"



При первом запуске шаблона, необходимо чтобы файл result.txt был удален. Ибо при первом запуске первый запущенный поток идет на главную страницу при отсутствии файла, а иначе он пойдет в файл temp.txt, который по логике должен быть пуст. Сделанно для работы в многопоток, и чтобы при прерывании шаблона или перезагрузки инстанса можно было не начинать сначала.

Шаблон состоит из:
1.
Проверка первый ли это запуск
2. Переход страницу, получение информации со страницы (ссылки, титл)
3. Проверка отсутствия полученных ссылок в блеклисте, проверка удолитворению уровня вложенности

Расмотрим детальнее.

Входные настройки шаблона:
B.png


---------------------------------------------------------------
Проверяем наличие файла result.txt, если его нет, то создаем пустой result.txt и идем на главную, если есть, то значит у нас уже есть какие-то обработанные страницы, а значит и ссылки с этих страниц для обработки, которые будут лежать в temp.txt и следовательно идем на обработку файла temp.txt
F.png


---------------------------------------------------------------
Переходим на начальную страницу. Сохраняем её ссылку и титл в result.txt и просто ссылку в blacklist.txt
E.png


---------------------------------------------------------------
Увеличиваем счетчик вложенности. Что бы сохранять ссылки со страницы с тем уровнем вложенности который у них будет. Обнуляем счетчик внутренних ссылок на странице. Получаем href внутренней ссылки путем проставления обязательного атрибута href, которой должны содержать наш домен указанных во входных настройка.
Очищаем у урла всё со со знака #, чтобы отсечь ссылки ведущие на одни и теже страницы, но с фокусацией на разных участках.
G.png


---------------------------------------------------------------
Проверяем отсутствие полученного урла в blacklist (уже обработанные ранее).
Добавляем в blacklist. Добавляем в temp на обработку.
H.png


---------------------------------------------------------------
Берем ссылку с её уровнем вложенности, парсим с неё титл. Сохраняем в результат. Проверяем меньше ли её вложенность, максимально допустимому, если меньше, то начинаем парсить сссылки, чтобы получить ссылки с ещё более глубоким уровнем вложенности. Иначе берем следующую строку из temp.txt
I.png


Всё!
Шаблон прикрепил!
 
Номер конкурса статей
  1. Шестой конкурс статей
Тема статьи
  1. Другое

Вложения

А выходные данные для чего могут использоваться? И Есть ли красивый вывод данных на выходе... А том что-то запустил шаблон проверить и боюсь что на выходе у меня просто текстовый файл будет...
 
А выходные данные для чего могут использоваться? И Есть ли красивый вывод данных на выходе... А том что-то запустил шаблон проверить и боюсь что на выходе у меня просто текстовый файл будет...
а чем страшен текстовик?)
 
А я шаблона)))

Никогда подобное не делал)
Назначение - собрать всю структуру сайта. Зачем именно - тут уже у каждого свои причины. Я однажды хотел спереть все статьи с одного сайта. Карту сайта примерно таким же образом собрал, но так и не воспользовался ею)
 
а чем страшен текстовик?)
Не знаю для меня понятия "Карта", сразу имеет одно значения, это визуально её понимать..
А можно больше браузера использовать?
Ну вот всегда так, я вот например тоже только учусь =) И тьфу тьфу меня пока помидорами за браузер не закидали.
 
Назначение - собрать всю структуру сайта. Зачем именно - тут уже у каждого свои причины. Я однажды хотел спереть все статьи с одного сайта. Карту сайта примерно таким же образом собрал, но так и не воспользовался ею)

Ну теперь более понятно.. У меня просто не разу подобных задач не стояло, не сталкивался с таким.
 
Ваше мнение очень важно для нас, оставайтесь на линии
Расскажите мне сколько по времени данный шаблон будет собирать в 1 потоке карту сайта на 120 00 страниц.
 
Ну вот всегда так, я вот например тоже только учусь =) И тьфу тьфу меня пока помидорами за браузер не закидали.
Если самый обычный примитивный сайт то с помощью GET\POST намного быстрее получиться. А суть та же самая. Просто парсим страничку через регулярку.
И если при WEB версии просто переход по страницам занимает 3-4 секунды, то через пост я за 3-4 секунды успею спарсить страниц 30, я думаю. и это если в один поток

Пока что не самая полезная статья из тех, что я видел, но и не самая бесполезная к сожалению (
 
Если самый обычный примитивный сайт то с помощью GET\POST намного быстрее получиться. А суть та же самая. Просто парсим страничку через регулярку.
И если при WEB версии просто переход по страницам занимает 3-4 секунды, то через пост я за 3-4 секунды успею спарсить страниц 30, я думаю. и это если в один поток

Пока что не самая полезная статья из тех, что я видел, но и не самая бесполезная к сожалению (
боюсь, всё будет не так просто. Нужно будет анализировать ссылки, проверять, от корня они идут или с текущей вложенности. Немного придется потрудится. А через веб зеннопостер тебе сам всё проанализирует и отдаст)
 
боюсь, всё будет не так просто. Нужно будет анализировать ссылки, проверять, от корня они идут или с текущей вложенности. Немного придется потрудится. А через веб зеннопостер тебе сам всё проанализирует и отдаст)
Не у каждого сайта есть человеческая карта. Маст хэв xml-карта. А для людей уже каждый как хочет перелинковку делает. Можно и без карты обойтись.
 
  • Спасибо
Реакции: kagorec
Не у каждого сайта есть человеческая карта. Маст хэв xml-карта. А для людей уже каждый как хочет перелинковку делает. Можно и без карты обойтись.
именно потому что не у каждого есть готовый sitemap и приходится прибегать к подобным методам
 
оо мне пригодится, как раз встала подобная задача, надо внедрить в свой шаб
 
А как сделать чтобы он парсил ток с главной страницы?
 
Шаблон не рабочий.
Первая ошибка в группе "Проверяем, обрабатывали ранее ссылку?", в кубике If - True с большой буквы.
Но и предыдущий кубик "свой код" не работает, дает true, когда ссылки такой в списке нету.
Если кто подскажет в чем загвоздка.....?
Ответ получен:
Мб неправильно реализован зеновский метод contains
используй
if(list.IndexOf(id)!=-1)
У меня давно давно была схожая проблема с контеинс и я перешёл на это решение
 
Последнее редактирование:

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)