xpath过滤元素怎么写

发布于 2022-09-12 02:06:04 字数 1061 浏览 17 评论 0

python新手,问题比较初级,各位大佬轻喷。
需要爬点数据,有个xpath问题请教下各位大佬,如下面html代码所示,
<span class="media-caption__text"></span>标签就获取它内部文本,没有就获取<figcaption></figcaption>内部的文本,但是必须要过滤掉<span class="off-screen"></span>

html代码如下所示:

<figcaption class="media-caption">
    <span class="off-screen">Image caption</span> 
    <span class="media-caption__text"> &#32445;&#32422;&#24066;&#26159;&#32654;&#22269;&#30123;&#24773;&#30340;&#8220;&#38663;&#20013;&#8221;&#12290;    </span>
</figcaption>

或者

<figcaption class="media-with-caption__caption">
    <span class="off-screen"></span>     
    &#22833;&#19994;&#20013;&#30340;&#32654;&#22269;&#38738;&#24180;&#65306;&#27882;&#27700;&#12289;&#24656;&#24807;&#19982;&#19981;&#23433;
</figcaption>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

染年凉城似染瑾 2022-09-19 02:06:04

为什么不用代码逻辑呢。。。
用xpath的话感觉很丑

//figcaption/span[@class="media-caption__text"][count(//figcaption/span[@class="media-caption__text"]) > 0]/text()[normalize-space()]|//figcaption[count(//figcaption/span[@class="media-caption__text"]) = 0]/text()[normalize-space()]
友欢 2022-09-19 02:06:04
from lxml import etree
text = '''
<figcaption class="media-caption">
<span class="off-screen">Image caption</span>
<span class="media-caption__text"> 纽约市是美国疫情的“震中”。 </span>
</figcaption>
<figcaption class="media-with-caption__caption">
<span class="off-screen"></span>
失业中的美国青年:泪水、恐惧与不安
</figcaption>
'''
html = etree.HTML(text)
result = html.xpath('//figcaption//text()[normalize-space()]')
print(result)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文