Глубокий парсинг ссылок со всего сайта

z@jivalo

Client
Регистрация
27.12.2016
Сообщения
798
Благодарностей
178
Баллы
43
Приветствую!
Такая проблема, облазил форум по своей теме что-то нашел, а что-то не получилось найти.
Задача сделать парсинг ссылок со всем сайта, на данный момент я смог вытащить ссылки из DOM
положил их в список как теперь все это дело зациклить правильно.
что бы не было дубликатов, у кого какие идеи ?
 

z@jivalo

Client
Регистрация
27.12.2016
Сообщения
798
Благодарностей
178
Баллы
43
вот сам шаблон, я только только начинаю так что не забрасывайте камнями
 

Вложения

doc

Client
Регистрация
30.03.2012
Сообщения
8 607
Благодарностей
4 599
Баллы
113

z@jivalo

Client
Регистрация
27.12.2016
Сообщения
798
Благодарностей
178
Баллы
43

doc

Client
Регистрация
30.03.2012
Сообщения
8 607
Благодарностей
4 599
Баллы
113

z@jivalo

Client
Регистрация
27.12.2016
Сообщения
798
Благодарностей
178
Баллы
43
А как вы думаете собирать > 1 200 000 ссылок какие нужно делать корректировки в шаблоне которые вы скинули ?
ЧТО бы память сразу не ушла в аут
Я подобное делать пытался в программе Content Download, но она потухла потому что там ограничение на оперативку, прога жрет 1 гб и после этого у меня все встало.
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 607
Благодарностей
4 599
Баллы
113
лям ссылок таким методом нереально. на это нужны будут недели минимум
 

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 312
Благодарностей
1 191
Баллы
113
лям ссылок таким методом нереально. на это нужны будут недели минимум
Если post/get реализация, то лям можно прогнать за пару часиков, если сайт не упадет от 300+ потоков.
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 607
Благодарностей
4 599
Баллы
113
Если post/get реализация, то лям можно прогнать за пару часиков, если сайт не упадет от 300+ потоков.
а если не пост гет, а как реализовано в статье, на которую я дал ссылку, то будет ровно так, я как написал.
 

z@jivalo

Client
Регистрация
27.12.2016
Сообщения
798
Благодарностей
178
Баллы
43
так профи, расскажите как лучше неделю могу ждать, так как это будет идти не зависимо от основной работы.
И еще сайт битрикс весит 20 гб большое кол-вол запросов он не потянет. По этому буду ждать 1-2 недели что поделаешь просто другие ресурсы предлагают подобное но за такие деньги.

Если я что-то не путаю но для этой цели идеально подойдет a-parser ? Но пока не могу его приобрести даже если он в своем деле лучше
 

z@jivalo

Client
Регистрация
27.12.2016
Сообщения
798
Благодарностей
178
Баллы
43
лям ссылок таким методом нереально
Да действительно вы правы, по поводу скорости я сейчас сайт решил протестить на вашем шаблоне там всего 100 ссылок очень долго делает
а если в 1 млн то это страшно представить как долго.
Я заметил что происходит запрос в браузер из переменной в которой находится url сайта, а если убрать такую логику быстрее будет?
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 607
Благодарностей
4 599
Баллы
113
Да действительно вы правы, по поводу скорости я сейчас сайт решил протестить на вашем шаблоне там всего 100 ссылок очень долго делает
а если в 1 млн то это страшно представить как долго.
Я заметил что происходит запрос в браузер из переменной в которой находится url сайта, а если убрать такую логику быстрее будет?
это не мой шаблон)
что касается скорости, с использованием браузера медленно будет в любом раскладе. Нужны запросы. Возможно, товарищ amyboose поможет с написанием шаблона, не зря же он тут отписался. Но это не просто проект и бесплатным он не будет
 

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 312
Благодарностей
1 191
Баллы
113
это не мой шаблон)
что касается скорости, с использованием браузера медленно будет в любом раскладе. Нужны запросы. Возможно, товарищ amyboose поможет с написанием шаблона, не зря же он тут отписался. Но это не просто проект и бесплатным он не будет
Нет, я с этим не помогу, так как у меня есть чел, с которым, я надеюсь, будем долго ещё работать по одному проекту
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 607
Благодарностей
4 599
Баллы
113

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 312
Благодарностей
1 191
Баллы
113

z@jivalo

Client
Регистрация
27.12.2016
Сообщения
798
Благодарностей
178
Баллы
43
спасибо как, нибудь попробуй ваши ответы использовать в решение вопроса:-):-):-)
 

Lexicon

Client
Регистрация
27.12.2012
Сообщения
1 775
Благодарностей
891
Баллы
113
Собрать список ссылок без сохранения графа довольно просто, правда все равно будет работать довольно долго и лучше использовать что то многопоточное или асинхронное но алгоритм простой
у вас должно быть всего 2 списка
1 найденные ссылки
2 ссылки, на которые робот заходил
вы отправляете бота на морду и он собирает все ссылки в 1 список
потом берет из списка 1 первую ссылку и смотрит, есть ли она в списке 2, если нет - заходит на страницу и собирает оттуда все ссылки, потом проверяет есть ли эти ссылки в списке 1. Если ссылка есть то просто пропускает, если нет то добавляет в список 1 ссылку. Потом та страница, где вы были должна быть добавлена в список 2

Дальше вы берете ссылку из списка 1 снова. Если она есть в списке 2 то пропускаете её и берете следующую и так далее.

тут будет два основных подводных камня - внешние ссылки и косяки cms которые будут вам генерировать уникальные адреса с атрибутами типа site.ru/catalog?page=1&page=1&page=1................&page=1 ну или дополнительные сортировки, которые генерируют новые страницы по урлам но не по контенту. Тут надо или вводить обрезку по глубине, или сравнивать между собой хеши страниц, если это возможно на распарсиваемом сайте.
 

z@jivalo

Client
Регистрация
27.12.2016
Сообщения
798
Благодарностей
178
Баллы
43
типа site.ru/catalog?page=1&page=1&page=1................&page=1
Тот пример что вы указали, по сути это канонически url и в нем меняются данные по этому такие адресе можно считать как дубли и удалить
тем самым оставить только
/catalog/
/catalog
звучит конечно интересно осталось реализовать, а вот то что ссылок больше 1 млн тут я даже не знаю как делать если все в одним файл это кошмар будет
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 607
Благодарностей
4 599
Баллы
113
Собрать список ссылок без сохранения графа довольно просто, правда все равно будет работать довольно долго и лучше использовать что то многопоточное или асинхронное но алгоритм простой
у вас должно быть всего 2 списка
1 найденные ссылки
2 ссылки, на которые робот заходил
вы отправляете бота на морду и он собирает все ссылки в 1 список
потом берет из списка 1 первую ссылку и смотрит, есть ли она в списке 2, если нет - заходит на страницу и собирает оттуда все ссылки, потом проверяет есть ли эти ссылки в списке 1. Если ссылка есть то просто пропускает, если нет то добавляет в список 1 ссылку. Потом та страница, где вы были должна быть добавлена в список 2

Дальше вы берете ссылку из списка 1 снова. Если она есть в списке 2 то пропускаете её и берете следующую и так далее.

тут будет два основных подводных камня - внешние ссылки и косяки cms которые будут вам генерировать уникальные адреса с атрибутами типа site.ru/catalog?page=1&page=1&page=1................&page=1 ну или дополнительные сортировки, которые генерируют новые страницы по урлам но не по контенту. Тут надо или вводить обрезку по глубине, или сравнивать между собой хеши страниц, если это возможно на распарсиваемом сайте.
достаточно 1го списка
 

z@jivalo

Client
Регистрация
27.12.2016
Сообщения
798
Благодарностей
178
Баллы
43

doc

Client
Регистрация
30.03.2012
Сообщения
8 607
Благодарностей
4 599
Баллы
113
Поясните пожалуйста почему 1 достаточно?
Берется стартовая, например индексная. Добавляется в список. А теперь в цикле берется 1я строка из этого списка. Переход. Парсятся все ссылки и добавляются в этот же список. Удаляются дубли. Берется 2я ссылка...
И так пока не будет ошибки, когда попытаешься взять N-ю строку
 

Lexicon

Client
Регистрация
27.12.2012
Сообщения
1 775
Благодарностей
891
Баллы
113
Берется стартовая, например индексная. Добавляется в список. А теперь в цикле берется 1я строка из этого списка. Переход. Парсятся все ссылки и добавляются в этот же список. Удаляются дубли. Берется 2я ссылка...
И так пока не будет ошибки, когда попытаешься взять N-ю строку
Не взлетит. После удаления дублей нет гарантий того, что сортировка не изменится
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 607
Благодарностей
4 599
Баллы
113
Не взлетит. После удаления дублей нет гарантий того, что сортировка не изменится
это какой должен быть алгоритм у удаления, чтобы сортировка поменялась?)
 

Lexicon

Client
Регистрация
27.12.2012
Сообщения
1 775
Благодарностей
891
Баллы
113
а вы знаете как работает тот что встроен в зенку? если есть 2 значения в середине и в конце списка какое из них удалится?
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 607
Благодарностей
4 599
Баллы
113

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 101
Баллы
113
знаю. останется тот, что выше
Именно!
Когда ручками что-то делаю, не редко таким образом удаляю строки, типа как по блэкЛисту. Т.е. в начале идут строки блэкЛиста, затем какой-нибудь разделитель и после него строки, в которых будет чистка, запускаю экшен "Удалить дубли" => после разделителя остаются нужные строки.
А вот Notepad++ с плагином TextFX, при удалении дублей, строки сортирует, что не есть Гуд.
 

Lexicon

Client
Регистрация
27.12.2012
Сообщения
1 775
Благодарностей
891
Баллы
113

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