在文档和SO文章中,仅提供有关如何使用此术语排除CSS类的参考:
response.css("div[id='content']:not([class*='infobox'])")
但是我想要实现的是排除一个节点,甚至排除多个节点,例如<span>
元素内的<div>
和<li>
元素。
让我给你一个例子。假设我正在抓取此HTML:
<li class="classA">
<div class="classB">
..
</div>
<span class="classC">Whatever</span>
This is the string I want to scrape
</li>
,并且我只对刮擦文本“这是我要刮擦的字符串”感兴趣,因此我想同时跳过<div>
和<span>
节点。我试图在可疑的外壳中使用以下内容,但无济于事:
response.css(".classA:not(span|div)::text").extract()
,但是我仍然得到排除的节点。
答案 0 :(得分:1)
简单:
response.css('li::text').extract_first()
答案 1 :(得分:1)
response.css('li.classA::text').extract_first()
response.xpath('//li[@class = "classA"]/text()').extract_first()