首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要使用Selenium Chromedriver和Python的帮助

需要使用Selenium Chromedriver和Python的帮助
EN

Stack Overflow用户
提问于 2021-05-31 03:32:25
回答 2查看 68关注 0票数 2

我想把每个商家的名字打印在页面的“他的”价格旁边,如下所示:

气候变化1.031欧元,79欧元

Hwonline 1.031,80欧元

Shopdigit 1.073,90欧元

我写的代码是:

代码语言:javascript
复制
browser.get('https://www.trovaprezzi.it/televisori-lcd-plasma/prezzi-scheda-prodotto/lg_oled_cx3?sort=prezzo_totale')
wait = WebDriverWait(browser, 10)
wait.until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, ".merchant_name_and_logo img")))
wait.until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, ".merchant_name_and_logo img"))) 

names = browser.find_elements_by_css_selector(".merchant_name_and_logo img")

for span in names:
    print(span.get_attribute("alt"))
    
all_divs = browser.find_elements_by_xpath("//div[@class='item_total_price']")
for div in all_divs:
    print(div.text)

但是,通过运行我的代码,我得到了以下结果:

气候变化

Hwonline

Shopdigit

1.031,79欧元

1.031,80欧元

1.073,90欧元

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-05-31 03:54:33

假设namesall_divs始终具有相同的长度(与示例中的长度相同),则应执行以下操作:

代码语言:javascript
复制
browser.get('https://www.trovaprezzi.it/televisori-lcd-plasma/prezzi-scheda-prodotto/lg_oled_cx3?sort=prezzo_totale')
wait = WebDriverWait(browser, 10)
wait.until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, ".merchant_name_and_logo img")))
wait.until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, ".merchant_name_and_logo img"))) 

names = browser.find_elements_by_css_selector(".merchant_name_and_logo img")
all_divs = browser.find_elements_by_xpath("//div[@class='item_total_price']")

for i in range(len(names)):
    print(names[i].get_attribute("alt") + ' ' + all_divs[i].text)
票数 2
EN

Stack Overflow用户

发布于 2021-05-31 04:06:04

这将打印卖家和价格的列表。您可以根据需要修改输出。

代码语言:javascript
复制
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait


browser = webdriver.Chrome(executable_path='/snap/bin/chromium.chromedriver')

browser.get('https://www.trovaprezzi.it/televisori-lcd-plasma/prezzi-scheda-prodotto/lg_oled_cx3?sort=prezzo_totale')
wait = WebDriverWait(browser, 10)
wait.until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, ".merchant_name_and_logo img")))

listings = browser.find_elements_by_css_selector(".listing_item.clearfix")

result = []
for listing in listings:
    name = listing.find_element_by_css_selector(".merchant_name_and_logo img").get_attribute("alt")
    price = listing.find_element_by_css_selector(".item_total_price").text
    result.append([name, price])

print(*result, sep='\n')

我的输出:

代码语言:javascript
复制
['Climaconvenienza', 'Tot. 1.031,79 €']
['Hwonline', 'Tot. 1.031,80 €']
['Shopdigit', 'Tot. 1.073,90 €']
['eBay', 'Tot. 1.085,00 €']
['ePrice', 'Tot. 1.123,99 €']
['Onlinestore', 'Tot. 1.124,80 €']
['Hwonline', 'Tot. 1.129,90 €']
['Shoppyssimo', 'Tot. 1.148,00 €']
['Prezzo forte', 'Tot. 1.166,39 €']
['eBay', 'Tot. 1.181,26 €']
['eBay', 'Tot. 1.193,42 €']
['eBay', 'Tot. 1.199,00 €']
['eBay', 'Tot. 1.244,91 €']
['eBay', 'Tot. 1.249,00 €']
['eBay', 'Tot. 1.269,62 €']
['Yeppon', 'Tot. 1.288,89 €']
['Showprice', 'Tot. 1.301,80 €']
['Galagross', 'Tot. 1.419,99 €']
['Climaconvenienza', 'Tot. 1.519,17 €']
['Di Lella Shop', 'Tot. 1.519,17 €']

要不使用方括号进行打印,请使用:

代码语言:javascript
复制
for item in result:
  print(item[0], ', '.join(map(str, item[1:])))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67765096

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档