Не работает парсер ссылок
Взял код отсюда: https://ru.stackoverflow.com/questions/716614/Парсинг-внутренних-ссылок-сайта
Проблема заключается в том что при запуске скрипта он просто молча зависает в консоли
from urllib.parse import urlparse
from bs4 import BeautifulSoup
import requests
import lxml
URL = 'https://ostrovok.ru/hotel/russia/?q=153'
HOST = 'https://ostrovok.ru'
links = set() # множество всех ссылок
def add_all_links_recursive(URL, maxdepth=1):
# print('{:>5}'.format(len(links)), url[len(HOST):])
# извлекает все ссылки из указанного `url`
# и рекурсивно обрабатывает их
# глубина рекурсии не более `maxdepth`
# список ссылок, от которых в конце мы рекурсивно запустимся
links_to_handle_recursive = []
# получаем html код страницы
request = requests.get(URL)
# парсим его с помощью BeautifulSoup
soup = BeautifulSoup(request.content, 'lxml')
# рассматриваем все теги <a>
for tag_a in soup.find_all('a', href=True):
# получаем ссылку, соответствующую тегу
link = tag_a['href']
if link.startswith('/hotel/russia') and not link.startswith('/hotel/russia/p'):
if link.startswith('/') and not link.startswith('//'):
# преобразуем относительную ссылку в абсолютную
link = HOST + link
# проверяем, что ссылка ведёт на нужный домен
# и что мы ещё не обрабатывали такую ссылку
if link not in links:
links.add(link)
links_to_handle_recursive.append(link)
if maxdepth > 0:
for link in links_to_handle_recursive:
add_all_links_recursive(link, maxdepth=maxdepth - 1)
def main():
add_all_links_recursive(URL)
for link in links:
print(link)
break
if __name__ == '__main__':
main()
Ответы (1 шт):
Автор решения: FotonPC
→ Ссылка
Все просто. Скорее всего там замкнутый круг из ссылок.
Например в ostrovok.ru ссылка на https://ostrovok.ru/hotel/russia/?q=153 а в нем на ostrovok.ru - вот и зависает