Получение номера с сайта pubchem с помощью Selenium
Я выполняю поиск на сайте pubchem по приведенному ниже коду. Мне нужно получить номер «Compound CID:» с экрана из результатов поиска, но я не смог его получить. Мне нужна помощь в этом.
driver = webdriver.Chrome()
url = "https://pubchem.ncbi.nlm.nih.gov/"
driver.get(url)
driver.maximize_window()
searchInput = driver.find_element_by_xpath("/html/body/div[1]/div/div/main/div[1]/div/div[2]/div/div[2]/form/div/div[1]/input")
searchInput.click()
searchInput.send_keys("75-05-8")
searchInput.send_keys(Keys.ENTER)
time.sleep(2)
driver.close()
1 ответ
Чтобы напечатать текст 6342 , вы можете использовать одну из следующих :
Использование css_selector и:
print(driver.find_element(By.CSS_SELECTOR, "a[data-label^='Featured Compound Result Secondary Link; Position:1; Page:1'] > span.breakword > span").get_attribute("innerHTML"))
Использование xpath и текстового атрибута:
print(driver.find_element(By.XPATH, "//a[starts-with(@data-label, 'Featured Compound Result Secondary Link; Position:1; Page:1')]/span[@class='breakword']/span").text)
В идеале вам нужно вызвать WebDriverWait для visible_of_element_located() , и вы можете использовать любую из следующих стратегий локаторастратегий локатора :
Используя CSS_SELECTOR и текстовый атрибут:
driver.get("https://pubchem.ncbi.nlm.nih.gov/") WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input[type='text'][id^='search']"))).send_keys("75-05-8" + Keys.RETURN) print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "a[data-label^='Featured Compound Result Secondary Link; Position:1; Page:1'] > span.breakword > span"))).text)
Использование XPATH и
get_attribute("innerHTML")
:driver.get("https://pubchem.ncbi.nlm.nih.gov/") WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@type='text'][starts-with(@id, 'search')]"))).send_keys("75-05-8" + Keys.RETURN) print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//a[starts-with(@data-label, 'Featured Compound Result Secondary Link; Position:1; Page:1')]/span[@class='breakword']/span"))).text)
Примечание . Вы должны добавить следующие импорты:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
Выход консоли:
6342
Вы можете найти соответствующее обсуждение в разделе Как получить текст WebElement с помощью Selenium — Python.
использованная литература
Ссылка на полезную документацию:
get_attribute()
методGets the given attribute or property of the element.
text
атрибут возвращаетThe text of the element.
- Разница между текстом и innerHTML с использованием Selenium