如何使用selenium/python查找并比较具有style属性的文本?

z9gpfhce  于 2021-08-20  发布在  Java
关注(0)|答案(1)|浏览(442)

很抱歉,如果这个问题措辞怪异,我刚刚开始使用selenium。我想做一个程序,让别人知道什么时候某些口味的vapes在批发网站上几乎缺货。到目前为止,我的程序真的很简单,并将继续下去 url 从表格中打印出不同口味的vape及其库存。
但是,我想检查库存数量(剩下的vape数量)下的文本,并打印“(这种特定的vape味道)几乎没有库存了!”如果数字低于10,以下是我目前的代码:

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
PATH = "C:\Program Files (x86)\chromedriver.exe"
driver = webdriver.Chrome(PATH)

driver.get("https://safagoods.com/vape-shop/disposable-vape-devices/huge-disposables")

element = driver.find_element_by_xpath("//*[@id='input-option2231']").text
print(element)
driver.close()

有什么建议吗?我不打算对网站上的每一个vape都这样做,只是非常流行的vape,这样使用它的人就可以运行程序,了解他们应该先点什么,以及他们可以等待点什么。谢谢各位。

gudnpqoy

gudnpqoy1#

作为一种可能的解决方案,您可以检查该值是否小于x,然后将其附加到列表中。我的解决方案将向您打印一个金额小于20的列表。
解决方案

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/huge-disposables")
wait = WebDriverWait(driver, 15)
table = wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, ".table.table-bordered tr[style='background: #eeeeee;']")))
data = []
rows = driver.find_elements_by_css_selector(".table.table-bordered tr[style='background: #eeeeee;']")
for row in rows:
    #qty = row.find_element_by_xpath("./td[1]").text
    stock = row.find_element_by_xpath("./td[2]").text
    name = row.find_element_by_xpath("./td[3]").text
    if int(stock) < 20:
        data.append([stock, name])
print(*data, sep='\n')

输出:

['17', 'Banana Ice (SKU: HUGE-BI )']
['17', 'Lush Ice (SKU: HUGE-LI )']

您也可以使用以下选项打印它,不带括号:

for x in data:
    print(' '.join(x))

这将为您提供以下输出:

17 Banana Ice (SKU: HUGE-BI )
17 Lush Ice (SKU: HUGE-LI )

相关问题