我爸爸经营一家企业,他有一个特定的批发网站,但我注意到,当他购买一次性电子烟时,他必须点击每个电子烟,然后查看该电子烟每种口味的库存。我想创建一个程序,打印出每种一次性电子烟每种口味的库存。到目前为止,我访问每个 vape 的 URL,然后检查显示不同口味库存的表格,并将该表格打印出来。但是,我不想输入每个 vape 的具体 URL,然后为每个库存表键入 print 。有没有一种更干净的方法,只使用列出所有一次性电子烟的页面的 URL,使用“driver.get('https://safagoods.com/vape-shop/disposable-vape-devices/')”和然后从那里点击所有不同的电子烟并打印出他们的库存表?抱歉,如果这是一个令人困惑的问题。希望如果我的代码运行它可以更好地解释它:
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 种不同的电子烟,有时他们会更新商品。我不想输入每个电子烟的信息,而是想知道是否有一种方法可以从我上面发布的初始一次性电子烟页面开始,并打印出所有可用电子烟的库存。如果没有,我可以将它们全部输入,只是想看看是否有更好的选择。
如果你用你的产品抓取主页,应该很容易:
解决方案
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 选择器和显式等待。
我的兄弟也经营一家电子烟商店,我想如果我找到一个很酷的解决方案,那将会非常有帮助。