【问题标题】:Find total numbers of urls查找网址总数
【发布时间】:2021-01-29 10:58:12
【问题描述】:

我在 python 中编写脚本来获取多个 url。在控制台中打印多个 url,但我希望在控制台中打印多个 url 时显示 url 总数。

from selenium import webdriver
from selenium.webdriver.common.by import By
import time

driver = webdriver.Chrome(executable_path="C:\Program Files\Python39\libs\chromedriver.exe")
driver.maximize_window()
url = ("https://www.libertybooks.com/")
driver.get(url)

driver.implicitly_wait(10)
time.sleep(5)

button = driver.find_element_by_xpath('//a[@class="cc-btn cc-allow"]').click()
Non_fiction = driver.find_element_by_xpath('//ul/li[2][@class="top_level dropdown"]/a').click()

for i in range(30):
 multiple_urls = driver.find_element_by_xpath('//img[@class="img-responsive reg-image"]').get_attribute('src')
 print(multiple_urls)

【问题讨论】:

标签: python selenium-webdriver xpath webdriverwait mousehover


【解决方案1】:

你的代码的最后一部分需要修改:

在:

for i in range(30):
    multiple_urls = driver.find_element_by_xpath('//img[@class="img-responsive reg-image"]').get_attribute('src')
    print(multiple_urls)

xpath '//img[@class="img-responsive reg-image"]' 引用了几张图片,所以你应该使用一个函数来获取这些图片的列表,即“driver.find_elements_by_xpath”而不是我用于一个元素的“driver.find_element_by_xpath”(elements 而不是 element)。

所以你需要将该部分修改为:

multiple_urls = driver.find_elements_by_xpath('//img[@class="img-responsive reg-image"]')

现在您可以通过以下方式获取图像数量:

print(len(multiple_urls))

然后,通过以下方式打印 URL:

for url in multiple_urls:
    print(url.get_attribute('src'))

【讨论】:

    【解决方案2】:

    要计算 url 的总数,您必须将 Mouse Hover 元素作为 Non Fiction 诱导 WebDriverWait 用于 visibility_of_all_elements_located(),您可以使用以下 Locator Strategies

    • 代码块:

      driver.get("https://www.libertybooks.com/")
      WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[@class='cc-btn cc-allow']"))).click()
      ActionChains(driver).move_to_element(WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//li[@class='top_level dropdown']//a[contains(., 'Non Fiction')]")))).perform()
      print(len(WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.XPATH, "//li[@class='top_level dropdown']//a[contains(., 'Non Fiction')]//following::div[1]//ul[contains(@class, 'list-unstyled')]//ul//a")))))
      
    • 控制台输出:

      34
      

    【讨论】:

      猜你喜欢
      • 2019-02-01
      • 2013-01-02
      • 1970-01-01
      • 1970-01-01
      • 2012-11-17
      • 2018-04-24
      • 2017-12-21
      • 1970-01-01
      • 2018-09-13
      相关资源
      最近更新 更多