Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 当网站上的产品名称被覆盖层隐藏时,我如何抓取它们?_Python_Selenium_Web Scraping - Fatal编程技术网

Python 当网站上的产品名称被覆盖层隐藏时,我如何抓取它们?

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

我正在尝试获取计算机上所有设备的名称。然而,当我尝试用一个小工具抓取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)

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

我很难获取您使用的数据中的所有元素,但请尝试以下方法:

使用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)”谢谢,这非常有帮助