带有 selenium 的 Python:循环遍历列表中的第一个 Web 元素

米海·马林

我是 python 和 selenium webdriver 的新手,我已经开始给自己一些“任务”来练习。我有下一个问题:以下代码在页面中识别正确数量的产品,如果我打印 all_products 将在 pdb 中打印:最多 12 个不同的 web 元素;(页面上的默认结果为 12 个或更少,具体取决于可用的项目)我想用“产品名称”和“产品价格”在字典中打印此页面中的每个产品但是有些问题,它看起来像循环通过第一个 web 元素,输出是:

产品数量:11 [{'名称':'Nova 9 SE 128GB Crystal Blue','价格':'1599,68'},{'名称':'Nova 9 SE 128GB Crystal Blue','价格':' 1599,68'},{'名称':'Nova 9 SE 128GB 水晶蓝','价格':'1599,68'},{'名称':'Nova 9 SE 128GB 水晶蓝','价格':' 1599,68'},{'名称':'Nova 9 SE 128GB 水晶蓝','价格':'1599,68'},{'名称':'Nova 9 SE 128GB 水晶蓝','价格':' 1599,68'},{'名称':'Nova 9 SE 128GB 水晶蓝','价格':'1599,68'},{'名称':'Nova 9 SE 128GB 水晶蓝','价格':' 1599,68'},{'名称':'Nova 9 SE 128GB 水晶蓝','价格':'1599,68'},{'名称':'Nova 9 SE 128GB 水晶蓝','价格':'1599,68'},{'名称':'Nova 9 SE 128GB 水晶蓝','价格':'1599, 68'}]

url = "https://www.orange.ro/magazin-online/telefoane?order=ASC&sort=TopSales&from=0&size=12&filter=Huawei,Apple,Faraabonament1,Noi,Instoc"
driver.get(url)
all_products_class = 'ws-product'
all_products = driver.find_elements(By.CLASS_NAME, all_products_class)
print(f"Number of products: {len(all_products)}")
all_product_price = []

for product in all_products:

  device_name_xpath = ".//span[@class='ws-product-model-name']"
  device_name = driver.find_element(By.XPATH, device_name_xpath)
  name = device_name.text

  device_price_xpath = ".//span[@class='ws-product-price']"
  device_price = driver.find_element(By.XPATH, device_price_xpath)
  price = device_price.text
  
  all_product_price.append({'Name': name, 'Price' : price})

print(all_product_price)
driver.quit
米海·马林

我在代码中发现了问题:

device_name = driver.find_element(By.XPATH, device_name_xpath)

替换为:

device_name = product.find_element(By.XPATH, device_name_xpath)

&

device_price = driver.find_element(By.XPATH, device_price_xpath)

替换为

device_price = product.find_element(By.XPATH, device_price_xpath)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在 selenium python 中仅选择带有标题标签的 web 元素

Python Selenium-webdriver:用于在整个循环中循环返回列表的第一个元素

返回所有选择Web元素作为Selenium中的列表

如何通过Selenium / Python选择没有ID的Web元素

Python Selenium从下拉列表中选择第一个元素

带有Selenium的Python“元素未附加到页面文档”

Selenium Python:如何单击带有 innerText 的跨度元素

带有Selenium的Python:无法找到元素错误

单击带有Selenium和python的CSS元素

需要帮助,使用带有Selenium的Python编辑元素

带有列表并返回带有第一个列表的唯一元素的新列表的Python函数

带有对列表的可变参数模板,只想转发对的第一个元素

使用Selenium进行Python Web抓取:在模式框中找到一个元素并下载-循环

访问第一个元素后无法通过xpaths在循环中访问其余元素-WebScraping Selenium Python

遍历Python列表,但第一个元素在末尾?

以有效的方式从子列表的列表中删除第一个元素[python 3]

如何在python列表中从最后到第一个访问所有列表元素

LESS 在 DIV 中隐藏带有类的第一个元素

带有硒的 Python:如何获取元素中的第一个字符串

如何使用带有硒的python查找Web元素?

jquery中只有第一个元素每个循环都被更新

Python + Selenium:等待Web元素消失

使用 Selenium 从网页中删除 Web 元素

如何从 Python 中的 Selenium Web 元素中提取内部元素?

返回列表中第一个元素的所有索引,其中后续值递增

将具有相同第一个元素的向量分组到向量列表中

Selenium Web 元素 - 获取元素 ID 并循环迭代

当DragAndDropToObject时,Selenium IDE会忽略列表的第一个元素

Selenium / Python:为什么在我的for循环迭代中找到第一个元素后,为什么Selenium find_element_不再通过查找元素了?