【问题标题】:How to find and compare text with the style property using Selenium/Python?如何使用 Selenium/Python 查找文本并将其与样式属性进行比较?
【发布时间】:2021-07-08 19:37:20
【问题描述】:

对不起,如果这个问题的措辞很奇怪,我刚开始使用 Selenium。我想制作一个程序,让某人知道某些电子烟的某些口味何时在批发网站上几乎缺货。到目前为止,我的程序非常简单,将转到特定 vape 的 url 并从表格中打印出显示不同口味的 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 进行此操作,以便使用它的人可以运行程序并了解他们应该首先订购什么以及他们可以等待订购什么。谢谢大家。

【问题讨论】:

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


    【解决方案1】:

    作为一种可能的解决方案,您可以检查该值是否小于 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 )
    

    【讨论】:

    • 谢谢!!我开始更好地了解硒。您为我的计划提供了一个良好的开端。
    猜你喜欢
    • 2022-09-27
    • 2020-06-08
    • 2020-03-26
    • 1970-01-01
    • 1970-01-01
    • 2021-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多