首页 > 解决方案 > 如何在 Python 中使用 Selenium 来获取 JavaScript 元素?

问题描述

我想解析“禁用”,但我无法使用 Beautiful Soup 来解析。如何在 Python 中使用 Selenium 来解析“禁用”?我正在解析的网站:https ://sport.woot.com/offers/asics-mens-clearance-calculator?ref=w_cnt_lnd_cat_sprt_18_1 大小

                                    <select id="attr-size" name="Size">
                                        <option value="none">- Select -</option>
                                            <option value="6.5">6.5</option>
                                            <option value="8">8</option>
                                            <option value="8.5" disabled="">8.5</option>
                                            <option value="9.5">9.5</option>
                                            <option value="10">10</option>
                                            <option value="10.5">10.5</option>
                                            <option value="11">11</option>
                                            <option value="12" disabled="">12</option>
                                            <option value="13" disabled="">13</option>
                                            <option value="14" disabled="">14</option>
                                            <option value="12 Wide US">12 Wide US</option>
                                            <option value="13 (4E)" disabled="">13 (4E)</option>
                                    </select>
                                </div>

试图:

from selenium import webdriver
import geckodriver_autoinstaller
driver = webdriver.Firefox()
driver.get("https://sport.woot.com/offers/asics-mens-clearance-calculator? 
ref=w_cnt_lnd_cat_sprt_18_1")
disabled_sizes = driver.find_element_by_class_name("disabled")
my_disabled_sizes = []
try:
    for disabled_size in disabled_sizes:
        try:
            my_disabled_sizes.append(disabled_sizes.text)

        except:
            pass
except:
    pass
try:
    print(my_disabled_sizes[1:])  # skip first element then start listing 
disabled sizes
except:
    pass

标签: javascriptpythonseleniumparsingweb-scraping

解决方案


您可以使用下面的 xpath 来获取所有带有disabled属性的选项。

//select[@id='attr-size']/option[@disabled]

这是在 python 中获取所有禁用元素的逻辑。

disabled_elems =driver.find_elements_by_xpath("//select[@id='attr-size']/option[@disabled]")

截屏:

在此处输入图像描述


推荐阅读