@Deka007

Как спарсить ссылки, пройти по ним и получить еще ссылки и так до бесконечности?

Получаем html
def get_html(url):
    headers = {'Accept-Encoding': 'identity'}
    response = requests.get(url, headers=headers)
    return response.content

Парсинг ссылок
def parse_html(html):
    soup = BeautifulSoup(html, features="html.parser")
    links = []
    for link in soup.find_all('a', attrs={'href': re.compile("^(/wiki/)((?!:).)*$")}):
        try:
            link = 'https://en.wikipedia.org' + link['href']
            links.append(link)
        except KeyError:
            pass
    return links

Получаю главную ссылку из рандомной странице
получение главной ссылки
def main_link(html):
    soup = BeautifulSoup(html, features="html.parser")
    links = soup.findAll('link', rel="canonical")
    for link in links:
        link = link['href']
    return link

main
def main():
       article1 = main_link(get_html('https://en.wikipedia.org/wiki/Special:Random'))
       print('article 1 ' + article1)
       parse_art1 = parse_html(get_html(article1))
       print('links article 1:')
       print(parse_art1)

Ну и вот результат
Результат
article 1 https://en.wikipedia.org/wiki/Larissa_Marolt

links article 1:
['https://en.wikipedia.org/wiki/Carinthia_(state)', 'https://en.wikipedia.org/wiki/Austria', 'https://en.wikipedia.org/wiki/Klagenfurt', 'https://en.wikipedia.org/wiki/Fashion_model', 'https://en.wikipedia.org/wiki/Austria%27s_Next_Topmodel,_Cycle_1', 'https://en.wikipedia.org/wiki/Austria%27s_Next_Topmodel', 'https://en.wikipedia.org/wiki/Germany%27s_Next_Topmodel,_Cycle_4', 'https://en.wikipedia.org/wiki/Germany%27s_Next_Top_Model', 'https://en.wikipedia.org/wiki/Carinthia_(state)', 'https://en.wikipedia.org/wiki/Sankt_Kanzian_am_Klopeiner_See', 'https://en.wikipedia.org/wiki/Freedom_Party_of_Austria', 'https://en.wikipedia.org/wiki/Gymnasium_(Germany)', 'https://en.wikipedia.org/wiki/Swarovski', 
..... очень много ссылок....

А хотелось бы, получив массив ссылок с одной странице, пробежать по этим ссылкам и получить ссылки с другой странице и т.д.
Далее в картинке, что я имею ввиду, надеюсь не лишнее...
картинка
5e1453ecaaca7620333030.png
  • Вопрос задан
  • 214 просмотров
Пригласить эксперта
Ответы на вопрос 1
@dimuska139
Backend developer
Я думаю, тут удобней и проще всего воспользоваться Scrapy
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы