【问题标题】:Getting a number from pubchem site with Selenium使用 Selenium 从 pubchem 网站获取号码
【发布时间】:2022-01-01 07:02:56
【问题描述】:

我正在使用以下代码在 pubchem 网站上进行搜索。我需要从搜索结果的屏幕中获取“复合 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()

【问题讨论】:

    标签: python selenium pubchem


    【解决方案1】:

    要打印文本6342,您可以使用以下任一Locator Strategies

    • 使用 css_selectorget_attribute("innerHTML"):

      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"))
      
    • 使用xpathtext属性:

      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)
      

    理想情况下,您需要为visibility_of_element_located() 诱导WebDriverWait,您可以使用以下任一Locator Strategies

    • 使用 CSS_SELECTORtext 属性:

      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)
      
    • 使用 XPATHget_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
      

    您可以在How to retrieve the text of a WebElement using Selenium - Python找到相关讨论


    参考文献

    链接到有用的文档:

    【讨论】:

    • 非常感谢。这对我来说非常重要。我的知识水平中等。我会看你提供的文件。感谢您的详细解答。
    • 我的意思是你使用了 time.sleep() 和一个贬值的 driver.find_by_xpath() 你似乎也没有服务。
    • @ArundeepChohan 你在哪里找到 time.sleep()driver.find_by_xpath() 在我的回答中:/
    • 不是你debanjan
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-08
    • 2021-12-27
    • 2019-01-29
    • 2022-08-18
    • 1970-01-01
    • 2019-10-31
    • 1970-01-01
    相关资源
    最近更新 更多