gpt4 book ai didi

html - xpath选择节点文本和子节点

转载 作者:行者123 更新时间:2023-12-03 03:58:48 27 4
gpt4 key购买 nike

我正在使用 python scrapy 从网站上抓取一些数据。

网站内容是这样的

 <html>
<div class="details">
<div class="a"> not needed</div>
content 1
<p>content 2</p>
<div>content 2</div>
<p>content 2</p>
<div>content 2</div>
<p>content 2</p>
<div class="b"> this is also not needed</div>
</div>
</html>

我需要获取完整的 html 数据,不包括 a、b 类的 div。

所以我的输出将是这样的

<div class="details">   
content 1
<p>content 2</p>
<div>content 2</div>
<p>content 2</p>
<div>content 2</div>
<p>content 2</p>
</div>

我怎样才能为此编写正确的xpath,或者我应该为类'details','a','b'的div编写xpath并使用字符串操作删除类'a','b'的div?

请注意,此处的内容是 'details' 类的 div 的文本,而不是其子级

最佳答案

您可以获得除 div 之外的所有子项与类ab使用node()self::语法:

//div[@class="details"]/node()[not(self::div[@class="a" or @class="b"])]

使用 scrapy shell 进行演示:

$ scrapy shell index.html
>>> nodes = response.xpath('//div[@class="details"]/node()[not(self::div[@class="a" or @class="b"])]').extract()
>>> print ''.join(nodes)
content 1
<p>content 2</p>
<div>content 2</div>
<p>content 2</p>
<div>content 2</div>
<p>content 2</p>

关于html - xpath选择节点文本和子节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27098112/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com