Создание цикла для последовательного открытия ссылок

#python #selenium #selenium-webdriver #web-scraping #selenium-chromedriver

Вопрос:

Этот сайт:
https://int.soccerway.com/international/europe/european-championships/c25/

 EUROPE

European Championship
                     2020
                         Group Stage
                         Final Stages
EC Qualification
WC Qualification Europe
UEFA Nations League
Baltic Cup
 

В нем есть две ссылки в левом боковом меню «Расширить Group Stage » и Final Stages :

 https://int.soccerway.com/international/europe/european-championships/2020/group-stage/r38188/
https://int.soccerway.com/international/europe/european-championships/2020/s13030/final-stages/
 

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

 url = "https://int.soccerway.com/international/europe/european-championships/c25/"

driver.get(url)
links_level_2 = driver.find_elements_by_xpath("//ul[contains(@class,'level-2')]/li/a")
for link_level_2 in links_level_2:
    level_2 = link_level_2.get_attribute("href")
    driver.get(level_2)
 

Ответ №1:

Вы можете легко это сделать с beautifulsoup помощью .

Поскольку вы четко не упомянули, что это links такое, я предполагаю, что вы пытаетесь извлечь links информацию, ul просматривая наш код.

Вот используемый код beautifulsoup . Это позволит вам перейти по ссылкам <ul> из обеих упомянутых ссылок.

 import bs4 as bs
import requests

urls = ['https://int.soccerway.com/international/europe/european-championships/2020/group-stage/r38188/', 'https://int.soccerway.com/international/europe/european-championships/2020/s13030/final-stages/']
headers = {"User-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36"}

#Code to get the ULs
for url in urls:
    resp = requests.get(url, headers=headers)
    soup = bs.BeautifulSoup(resp.text, 'lxml')
    ls = soup.find('ul', class_='level-2').findAll('li')
    for i in ls:
        print(i.find('a')['href'])
    print('n')

 
 /international/europe/european-championships/2020/group-stage/r38188/
/international/europe/european-championships/2020/group-stage/group-a/g10136/
/international/europe/european-championships/2020/group-stage/group-b/g10137/
/international/europe/european-championships/2020/group-stage/group-c/g10138/
/international/europe/european-championships/2020/group-stage/group-d/g10139/
/international/europe/european-championships/2020/group-stage/group-e/g10140/
/international/europe/european-championships/2020/group-stage/group-f/g10141/
/international/europe/european-championships/2020/s13030/final-stages/


/international/europe/european-championships/2020/group-stage/r38188/
/international/europe/european-championships/2020/s13030/final-stages/