Python 当网站上的产品名称被覆盖层隐藏时,我如何抓取它们?
我正在尝试获取计算机上所有设备的名称。然而,当我尝试用一个小工具抓取CSS选择器时,似乎有一个覆盖层不允许您选择带有名称的标题 我尝试过各种各样的XPath,但是当试图获取属性下的所有名称时,它们似乎只返回第一个名称,或者根本不返回任何名称。我也试过了Python 当网站上的产品名称被覆盖层隐藏时,我如何抓取它们?,python,selenium,web-scraping,Python,Selenium,Web Scraping,我正在尝试获取计算机上所有设备的名称。然而,当我尝试用一个小工具抓取CSS选择器时,似乎有一个覆盖层不允许您选择带有名称的标题 我尝试过各种各样的XPath,但是当试图获取属性下的所有名称时,它们似乎只返回第一个名称,或者根本不返回任何名称。我也试过了 attribute_value = WebDriverWait(driver, 2).until(EC.visibility_of_element_located((By.XPATH, '//*[@id="div_product_list_ite
attribute_value = WebDriverWait(driver, 2).until(EC.visibility_of_element_located((By.XPATH, '//*[@id="div_product_list_item_div_product_list_item_0"]/div[1]/div[2]/a/div[2]/span[1]')))
并进行项目迭代,但范围可能会发生变化
def phoneList():
driver.get("https://www.bell.ca/Mobility/Smartphones_and_mobile_internet_devices")
attribute_value = WebDriverWait(driver, 2).until(EC.element_to_be_clickable((By.XPATH, '//*[@id="productListWithFilters"]/div[3]'))).\
get_attribute("class='rsx-product-name hidden-xs hidden-sm selectorgadget_suggested'")
print(attribute_value)
我希望获取所有设备名称,并将其放入列表中,而不管其大小。我很难获取您使用的数据中的所有元素,但请尝试以下方法: 使用find_elements_by_css_选择器查找所有设备名称元素。循环浏览这些内容,抓取文本并添加到列表中
list = []
cssSelector = '#productListWithFilters .rsx-product-list-product-name-group-bottom span:nth-child(1)'
devices = driver.find_elements_by_css_selector(cssSelector)
for i in devices:
list.append(i.text)
轻微错误:)应为:“#productListWithFilters.rsx产品列表产品名称组底部span:n个孩子(2)”谢谢,这非常有帮助