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

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日

悬赏问题

  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持