Как получить все ссылки ‘href’ с помощью использования следующих братьев и сестер в selenium Python

#python-3.x #selenium #web-scraping #selenium-chromedriver

#python-3.x #селен #очистка веб-страниц #selenium-chromedriver

Вопрос:

введите описание изображения здесь

 from selenium import webdriver
driver = webdriver.Chrome("C://Users//psingh//AppData//Local//Programs//Python//Python38-32//chromedriver.exe")
driver.get("https://download.cms.gov/nppes/NPI_Files.html")
element = driver.find_element_by_xpath("//tr[./td[./b[text()='Weekly Incremental NPI Files']]]/following-sibling::tr//a")
ele = element.get_attribute("href")
print(ele)
driver.quit()
 

Я хочу получить все 4 ссылки «href» под заголовком «Еженедельные инкрементные файлы NPI». с помощью приведенного выше кода я могу получить только верхнюю 1-ю ссылку.

Ответ №1:

Используйте driver.find_elements_by_xpath элементы с символом s, чтобы получить все в элементе, а затем перебирать результат:

 from selenium import webdriver
driver = webdriver.Chrome("C:Program FilesChromeDriverchromedriver.exe")
driver.get("https://download.cms.gov/nppes/NPI_Files.html")
element = driver.find_elements_by_xpath("//tr[./td[./b[text()='Weekly Incremental NPI Files']]]/following-sibling::tr//a")
ele = [ele.get_attribute("href") for ele in element]
print(ele)
driver.quit()
 

Комментарии:

1. вы получаете эту ошибку, TypeError: объект ‘WebElement’ не может быть повторен

2. Вы использовали мой пример? Вывод: ['https://download.cms.gov/nppes/NPPES_Data_Dissemination_120720_121320_Weekly.zip', 'https://download.cms.gov/nppes/NPPES_Data_Dissemination_121420_122020_Weekly.zip', 'https://download.cms.gov/nppes/NPPES_Data_Dissemination_122120_122720_Weekly.zip', 'https://download.cms.gov/nppes/NPPES_Data_Dissemination_122820_010321_Weekly.zip', ''] уверен, что вы изменили driver.find_element_by_xpath на driver.find_elements_by_xpath с помощью s?

3. Да, я понял, я не изменил код, спасибо

Ответ №2:

Вы можете легко получить тег «a» с помощью этих xpath:

 xpath = "\a[contains(@href,'NPPES Data')]"
 

Он получит все теги «a», которые имеют href, адаптирующие условие.