如何获取所有<img>标签,但使用xpath在id为footer的<div>下排除<img>标签?

Joh*_*enn 0 html xpath web-scraping

你们知道我怎样才能获得所有img标签但是在使用xpath的id为footer的div下排除img标签?

目前要在html页面上获取所有img标签,我这样做: imgs = tree.xpath('//img')

但我想在一个id为footer的div下排除所有img标签,所以我正在做这个:

imgs = tree.xpath('//*[not(div[@id="footer"])]//img') < - 但这不起作用

Mar*_*tra 6

应该是这样的:

imgs = tree.xpath('//img[not(parent::div[@id="footer"])]')
Run Code Online (Sandbox Code Playgroud)

分解:

  • //img- 搜索所有<img>标签
  • [] - where子句
  • not(parent::div[@id="footer"]) - 没有(直接)父div,其属性id带有值footer

如果<div>元素不是<img>其中一个父元素的直接父元素,请使用:

imgs = tree.xpath('//img[not(ancestor::div[@id="footer"])]')
Run Code Online (Sandbox Code Playgroud)