我正在尝试获取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)
我希望获取所有设备名称并将其放入列表中,而不管大小如何。
答案 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)