I';我不确定为什么无法使用Python Selenium定位此xpath

I';我不确定为什么无法使用Python Selenium定位此xpath,python,selenium,selenium-webdriver,xpath,web-scraping,Python,Selenium,Selenium Webdriver,Xpath,Web Scraping,我试图在一个以无限滚动的网格格式显示的站点上抓取每个项目。但是,我甚至坚持使用xpath获取第二项,因为它说: selenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:无法找到元素:{“方法”:“xpath”,“选择器”:”//div[@class='el-card广告卡始终是阴影'][2]'} x=1 当x

我试图在一个以无限滚动的网格格式显示的站点上抓取每个项目。但是,我甚至坚持使用xpath获取第二项,因为它说:
selenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:无法找到元素:{“方法”:“xpath”,“选择器”:”//div[@class='el-card广告卡始终是阴影'][2]'}

x=1
当x<5时:
时间。睡眠(5)
target=driver.find_element_by_xpath(f”//div[@class='el-card广告卡总是阴影'][{x}]))
目标。单击()
等待直到(位于((By.ID,“详细信息”)的元素的EC可见性)
打印(驱动程序。当前\u url)
时间。睡眠(5)
司机:回来
时间。睡眠(5)
WebDriverWait(驱动程序,3)。直到(EC.标题包含(“刚售出”))
时间。睡眠(5)
x+=1
使用我的f-stringxpath,它能够找到该类的第一个div并打印URL,但是当它完成while循环的一次迭代时,它就无法找到该类的第二个div(因此)

我一直在尝试用.sleep()监视它,以查看它到底在哪里失败,因为我认为它可能在加载页面之前运行,因此无法找到它,但我给了它足够的时间来完成加载每个页面,但我找不到问题

这是该页面上HTML的结构: 每个div中都有一个该名称的类(以及我也尝试过使用的“el-card______身体”),每个显示的项目对应一个。 (这是每个div的外观)

提前感谢您的帮助


(免责声明:这是一篇研究论文,我不打算出售/受益于所收集的信息)

使用
find_elements\u by_xpath
,将每个项目存储在一个列表中,然后按照tdelaney的建议,重复使用它们完成了任务。

您可以尝试
targets=driver.find_elements\u by_by_xpath(//div[@el-card广告卡总是阴影']”
(注意复数并删除
[{x}]
)一次查找所有元素并查看有多少元素。最好将html作为文本发布。我的搜索功能对图像不起作用。只需尝试一下,并确认它会生成一个长度为10的列表(每次滚动超过页面限制时,都会添加10个项目)我不知道为什么你的方法不起作用,但答案似乎是使用该命令获取所有项目,并循环查看结果。它来自哪个网站
x = 1

while x < 5:
    time.sleep(5)
    target = driver.find_element_by_xpath(f"//div[@class='el-card advertisement card is-always-shadow'][{x}]")
    target.click()
    wait.until(EC.visibility_of_element_located((By.ID, "details")))
    print(driver.current_url)
    time.sleep(5)
    driver.back()
    time.sleep(5)
    WebDriverWait(driver, 3).until(EC.title_contains("Just Sold"))
    time.sleep(5)
    x += 1