我是 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] 删除。
我来说两句