#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, адаптирующие условие.