隐藏产品信息时如何在网站上获取产品名称?

时间:2019-07-01 22:28:00

标签: python selenium web-scraping

我正在尝试获取https://www.bell.ca/Mobility/Smartphones_and_mobile_internet_devices上所有设备的名称。但是,当我尝试使用小工具抓取CSS选择器时,似乎出现了一个覆盖层,该覆盖层无法使您选择带有名称的标头。

我尝试了各种xpath,但是在尝试获取属性下的所有名称时,它们似乎只返回名字或根本不返回名字。我也尝试过

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)

我希望获取所有设备名称并将其放入列表中,而不管大小如何。

1 个答案:

答案 0 :(得分:1)

我无法使用您正在使用的数据来获取所有元素,但是请尝试以下操作:

使用find_elements_by_css_selector查找所有设备名称元素。循环浏览这些内容,获取文字并添加到列表中。

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)
相关问题