Denis.Zzzzzzzz? 2022-10-27 22:24 采纳率: 50%
浏览 98
已结题

selenium使用find_elements进行二次定位时出现的问题

在使用selenium爬取数据的时候,使用了find_elements嵌套提取的时候遇到了问题

任务是提取下面网站上所有电影的名字(有CSS位置偏移)

browser = webdriver.Chrome()
browser.get("https://antispider3.scrape.center/")
div_list = browser.find_elements(By.XPATH, '//div[@id="index"]/div//div[@class="el-row"][1]/div')
# 提取了这个网站上这一页18个电影信息的要素

测试了一下,提取第二个电影的名字(虽然有偏移)是没问题的。

print(div_list[1].text)    # 提取第二个电影的名字
#清
#风
#家
#白

然而对div_list再进行find_elements的时候,提取出来的不是一部电影的名字,而是全部电影的名字:

print([a.text for a in div_list[1].find_elements(By.XPATH, "//h3/span")]  # 再利用find_elements定位span标签
# ['Wonder', '风\n\n\n清', '法\n\n\n\n妃', '士\n\n\n\n(', '年\n\n\n\n,', '非\n\n\n\n(', '些\n\n\n\n那', '笑\n........]

为什么对'selenium.webdriver.remote.webelement.WebElement'再进行find_elements,查找到的是全部元素而不是需要定位的父元素下的子元素呢?

  • 写回答

1条回答 默认 最新

  • GaspardR 2022-10-28 01:07
    关注
    1. xpath 是绝对路径查找
    2. 可以改成 find_elements(By.TAG_NAME, 'h3'),这样就是相对父元素查找
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月5日
  • 已采纳回答 10月28日
  • 创建了问题 10月27日