【问题标题】:How to click and print multiple elements in Selenium/Python?如何在 Selenium/Python 中单击并打印多个元素?
【发布时间】:2021-09-18 11:43:29
【问题描述】:

我爸爸经营一家企业,并且有一个专门的批发网站,但我注意到,当他购买一次性电子烟时,他必须点击每种电子烟,然后查看每种口味的电子烟库存。我想创建一个程序,打印出每种一次性 vape 的每种口味的库存。到目前为止,我访问了每个 vape 的 URL,然后检查显示不同口味库存的表格并将该表格打印出来。但是,我不想为每一个 vape 输入特定的 URL,然后为每一个股票表输入 print。有没有一种更简洁的方法来使用“driver.get('https://safagoods.com/vape-shop/disposable-vape-devices/')”列出所有一次性电子烟的页面的 URL 和然后从那里点击所有不同的电子烟并打印出他们的库存表?抱歉,如果这是一个令人困惑的问题。希望如果我的代码运行它可以更好地解释它:

from selenium import webdriver

import time

PATH = "C:\Program Files (x86)\chromedriver.exe"
driver = webdriver.Chrome(PATH)
driver.set_window_size(2000,1000)

driver.get('https://safagoods.com/vape-shop/disposable-vape-devices/huge-disposables')
HUGE_vape = driver.find_element_by_id('input-option2231')
print(HUGE_vape.text)
driver.get('https://safagoods.com/vape-shop/disposable-vape-devices/kangvape-onee-max-disposables')
KANG_vape = driver.find_element_by_id('input-option2228')
print(KANG_vape.text)
driver.get('https://safagoods.com/vape-shop/disposable-vape-devices/art-x-disposables')
ART_vape = driver.find_element_by_id('input-option2196')
print(ART_vape.text)


driver.close()

到目前为止,我拥有三种电子烟,但有 57 种不同的电子烟,有时它们会更新商品。我不想为每一个电子烟输入信息,而是想知道是否有一种方法可以从我在上面发布的初始一次性电子烟页面开始,并打印出所有可用电子烟的库存。如果没有我可以全部输入,只是想看看是否有更好的选择。

【问题讨论】:

    标签: python css selenium selenium-webdriver web-scraping


    【解决方案1】:

    如果你用你的产品抓取主页应该很容易:

    解决方案

    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.wait import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    
    driver = webdriver.Chrome(executable_path='/snap/bin/chromium.chromedriver')
    
    driver.get("https://safagoods.com/vape-shop/disposable-vape-devices/")
    wait = WebDriverWait(driver, 15)
    vapes = wait.until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, ".caption>.name>a")))
    vape_names = []
    for vape in vapes:
        vape_names.append(vape.text)
    print(*vape_names, sep='\n')
    

    结果

    HUGE (BRAND) DISPOSABLE VAPE DEVICES 10PC [3000 PUFFS]
    KANGVAPE ONEE MAX DISPOSABLE VAPE DEVICES 10PC [5000 PUFFS]
    ART X DISPOSABLES 10PC [5000 PUFFS]
    FUME INFINITY DISPOSABLE VAPE DEVICES 5PC DISPLAY BOX
    SEA AIR PLUS DISPOSABLE VAPES 10PC
    HYDE RETRO RECHARGE DISPOSABLES 10PC DISPLAY BOX
    

    等等……

    从技术上讲,您创建一个空列表并在其中添加文本值。 请注意我如何使用 css 选择器和显式等待。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-27
      • 1970-01-01
      • 2021-10-14
      • 2021-03-12
      • 2021-07-21
      • 2021-05-22
      • 1970-01-01
      相关资源
      最近更新 更多