извлечение информации внутри тега span

#python #python-3.x #selenium-webdriver #web-scraping #beautifulsoup

#python #python-3.x #selenium-webdriver #веб-очистка #beautifulsoup

Вопрос:

Я пытаюсь извлечь идентификатор PMC между тегом «span».

Для этого я использовал find element с помощью xpath, но я столкнулся со следующей ошибкой:

 selenium.common.exceptions.NoSuchElementException:Message: Unable to locate element: /div/main/div/details/div/div[2]/details/summary/span[5]
  

Ниже приведена ссылка:

 https://www.ncbi.nlm.nih.gov/pmc/utils/idconv/v1.0/?tool=my_toolamp;email=my_email@example.comamp;ids=9811893
  

Ниже приведен мой код:

 driver = webdriver.Firefox(executable_path='geckodriver.exe')
driver.implicitly_wait(10)  # this lets webdriver wait 10 seconds for the website to load
driver.get("https://www.ncbi.nlm.nih.gov/pmc/utils/idconv/v1.0/?tool=my_toolamp;email=my_email@example.comamp;ids=9811893")
pmc= driver.find_element_by_xpath('/div/main/div/details/div/div[2]/details/summary/span[5]')
pmc.get_text()
  

Вывод должен быть:

 PMC24938
  

Ответ №1:

Вы можете использовать селектор атрибутов css, а затем get_attribute для получения значения атрибута

 from selenium import webdriver
driver = webdriver.Firefox(executable_path='geckodriver.exe')
driver.get("https://www.ncbi.nlm.nih.gov/pmc/utils/idconv/v1.0/?tool=my_toolamp;email=my_email@example.comamp;ids=9811893")
pmc = driver.find_element_by_css_selector('[pmcid]')
print(pmc.get_attribute('pmcid'))
  

Результат:

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


Хотя вам это не нужно selenium для этого сайта. Используйте быстрее requests и bs4

 import requests
from bs4 import BeautifulSoup as bs
r = requests.get('https://www.ncbi.nlm.nih.gov/pmc/utils/idconv/v1.0/?tool=my_toolamp;email=my_email@example.comamp;ids=9811893')
soup = bs(r.content, 'lxml')
pmc = soup.select_one('[pmcid]')['pmcid']
print(pmc)