Исчерпывающий список ссылок для определенного домена

avatar
user7496746
8 апреля 2018 в 10:41
56
1
0

У меня есть функция, которая анализирует содержимое заданного URL-адреса (обычно это корень домена) и возвращает список всех ссылок, указывающих где-то еще в пределах этого домена – она не включает внешние ссылки и не разрешить повторяющиеся ссылки.

Какой самый простой способ запустить эту функцию для каждой из ссылок, которые уже есть в списке, а затем для каждой из ссылок, которые будут найдены на следующем уровне, и так далее, снова и снова, независимо от того, насколько глубоко, независимо от того, сколько времени это займет, пока не будет создан исчерпывающий, полный список ссылок для этого конкретного домена?

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

Спасибо!

Источник
hnefatl
8 апреля 2018 в 10:44
1

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

user7496746
8 апреля 2018 в 12:58
0

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

Ответы (1)

avatar
Hussam Hallak
8 апреля 2018 в 10:56
0

Это простой алгоритм для этого

links_to_crawl = set()
crawled_links = set()

def function crawl(link):
    if (link not in crawled_links):
        new_links = findAllLinks (link)
        for new_link in new_links:
        #if new_link is not external:
            links_to_crawl.add(new_link)
        crawled_links.add(link)

for (link in links_to_crawl):
    crawl(link)

for (link in crawled_links):
    print crawled_links
user7496746
8 апреля 2018 в 12:30
0

Привет. Спасибо за Ваш ответ. Как я могу заставить это работать в сочетании с моей существующей функцией, которая анализирует содержимое страницы? Моя функция не принимает никаких аргументов, если это уместно. Я использую Python 3.

user7496746
8 апреля 2018 в 21:05
0

Вот мой код: url = urllib.request.urlopen('python.org') bytes = url.read() def scrap(): list_of_links = [] <преобразовать байты в список символов и манипулировать ими> <некоторый запутанный синтаксический анализ материал здесь> return list_of_links Как я могу интегрировать это с вашим примером, чтобы поиск стал исчерпывающим?