点击 python 中的复选框后抓取数据

问题描述 投票:0回答:1

我正在尝试从这个职业网站抓取一些链接。问题是,在抓取链接之前,我需要选择一个特定的品牌(比如 Sierra)。问题是如何单击下拉菜单和复选框来选择品牌。

我尝试执行以下操作:

第一步:先点击“品牌”,启用品牌复选框。 (一旦我们点击品牌,复选框就会在正常网页上变得可用)。

第2步: 单击复选框选择品牌。但是,我无法使用 css 或 xpath 找到该复选框。

第3步: 选中该复选框后,我们将获得许多职位发布的链接。但每页只显示前 10 个。我需要导航并找到所有职位发布的链接。 (11-20、21-30 等)

第 1 步的代码: 我尝试按照以下代码单击“品牌”,但我不确定我的代码是否能够做到这一点(我不知道如何验证以下代码是否有效)。

brand_dropdown_button = driver.find_element(By.XPATH, "//button[contains(text(), 'Brand')]")
brand_dropdown_button.click()

第2步的代码:(我尝试了以下,但不起作用)。

checkbox = driver.find_element(By.XPATH, "//input[@value='Sierra']") # no such elements 
checkbox = driver.find_element(By.CSS_SELECTOR, "input[value='Sierra']") # no such element

我尝试给它时间,但即使等待了 10 秒,我的代码也找不到任何复选框

另一个问题是,当我们单击“品牌”以启用复选框或选择特定品牌时,网址不会更改。这就是为什么我无法手动验证任何内容。

python html css selenium-webdriver web-scraping
1个回答
0
投票

这里有一些代码,单击“品牌”折叠面板,然后单击

brand
变量中提供的名称之一。

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

url = "https://jobs.tjx.com/global/en/search-results?rk=l-retail-jobs"
driver = webdriver.Chrome()
driver.maximize_window()
driver.get(url)

brand = "HomeGoods"
wait = WebDriverWait(driver, 10)
wait.until(EC.element_to_be_clickable((By.ID, "BrandAccordion"))).click()
wait.until(EC.element_to_be_clickable((By.XPATH, f"//div[@id='BrandBody']//span[text()='{brand}']"))).click()

您尝试单击的输入只是一个“支持”元素......它实际上不可见或不可单击。我不得不点击旁边包含品牌名称的 SPAN。

© www.soinside.com 2019 - 2024. All rights reserved.