【问题标题】:How to scrape all the search results using Selenium webdriver and Python如何使用 Selenium webdriver 和 Python 抓取所有搜索结果
【发布时间】:2020-05-19 03:17:03
【问题描述】:

我正在尝试从该站点 https://brokercheck.finra.org/search/genericsearch/list 的搜索结果中抓取所有 CRD#

(单击链接时需要重新搜索,只需为Individual 搜索输入一些随机内容)

我正在使用driver.find_elements_by_xpath 来定位每个结果页面上的所有 CRD 编号。但是,我已经玩了一段时间的路径,但 webdriver 仍然无法从站点中获取 CRD。

我目前有(在 Python 中)

crds = driver.find_elements_by_xpath("//md-list-item/div/div/div/div/div/bc-bio-geo-section/div/div/div/div/div/span")

但结果总是空的。

【问题讨论】:

  • 他们有相似的跨度类 spacerright ng-binding。 driver.find_elements_by_xpath("//span[@class= 'spacerright ng-binding']"));然后循环打印 .getText() 也许?

标签: python selenium xpath css-selectors webdriverwait


【解决方案1】:

要使用Selenium 从网站https://brokercheck.finra.org/search/genericsearch/grid 的搜索结果中打印所有CRD#,您必须为visibility_of_all_elements_located() 诱导WebDriverWait,您可以使用以下任一@ 987654323@:

  • 使用CSS_SELECTORget_attribute()

    print([my_elem.get_attribute("innerHTML") for my_elem in WebDriverWait(driver, 10).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, "span.ng-binding[ng-bind-html='vm.item.id']")))])
    
  • 使用 XPATH文本

    print([my_elem.text for my_elem in WebDriverWait(driver, 10).until(EC.visibility_of_all_elements_located((By.XPATH, "//span[starts-with(., 'CRD')]//following-sibling::span[1]")))])
    
  • 注意:您必须添加以下导入:

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

【讨论】:

    【解决方案2】:

    尝试像这样使用 .find_elements_by_css_selector

    crds = driver.find_elements_by_css_selector("span[ng-bind-html='vm.item.id']")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-03
      • 1970-01-01
      • 2021-04-29
      • 1970-01-01
      • 2014-11-19
      • 2014-02-22
      • 2011-12-06
      • 2021-11-03
      相关资源
      最近更新 更多