【问题标题】:How to get values from website which is always changing and connected to database?如何从不断变化并连接到数据库的网站获取值?
【发布时间】:2021-04-14 09:13:11
【问题描述】:

我正在根据需要使用pythonselenium 和其他软件包。我正在创建 GUI(图形用户界面),它将显示通过扔门的总人数。 我们已经拥有直接向特定网站报告的硬件,它是用php 编写的,数据库是sqlmariadb.

<span class="info-box-number f28 fc-666" id="tot_count">11</span>

这是代码示例,我想从中捕获“11”。我尝试使用 'id'、'class' 和 'xpath' 来使用 .text 捕获它,但到目前为止我找不到解决方案。我提出了一些其他问题,但对我没有帮助。

  • 因此,Idea 是创建每秒更新的 GUI 界面并显示通过的人数。我确实必须使用它获取一些其他值,这些值也以类似的格式、具有不同类、id 和 xpath 的相同数据库。

注意:我想要捕获的所有类和 id 都是唯一的。

如果有人有更好的想法,我愿意提出建议, 您的建议将不胜感激。

【问题讨论】:

  • 请添加您尝试过的内容以及错误是什么
  • 正如 PDHide 所说,包括一个简单的代码,说明你到目前为止所做的事情!

标签: python selenium xpath css-selectors webdriverwait


【解决方案1】:

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

  • 使用class_nameget_attribute("textContent")

    print(driver.find_element_by_class_name("info-box-number").get_attribute("textContent"))
    
  • 使用css_selectorget_attribute("innerHTML")

    print(driver.find_element_by_css_selector("span.info-box-number#tot_count").get_attribute("innerHTML"))
    
  • 使用xpathtext 属性:

    print(driver.find_element_by_xpath("//span[contains(., 'info-box-number') and @id='tot_count']").text)
    

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

  • 使用CLASS_NAMEget_attribute("textContent")

    print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CLASS_NAME, "info-box-number"))).get_attribute("textContent"))
    
  • 使用CSS_SELECTORtext属性:

    print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "span.info-box-number#tot_count"))).text)
    
  • 使用XPATHget_attribute()

    print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//span[contains(., 'info-box-number') and @id='tot_count']"))).get_attribute("innerHTML"))
    
  • 注意:您必须添加以下导入:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    

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


参考文献

链接到有用的文档:

【讨论】:

  • 非常感谢。我首先尝试了完全相同的方法,只是忘记设置适当的等待时间。
猜你喜欢
  • 1970-01-01
  • 2016-03-21
  • 1970-01-01
  • 1970-01-01
  • 2016-04-23
  • 1970-01-01
  • 2018-04-01
  • 2017-10-26
  • 2013-09-06
相关资源
最近更新 更多