Scrapy:使用 CSS 选择器排除节点/标签

在文档和 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>节点。我尝试在scrapy shell中使用以下内容,但无济于事:


response.css(".classA:not(span|div)::text").extract()

,但我仍然得到排除的节点。


慕码人2483693
浏览 377回答 2
2回答

四季花海

这很容易:1.使用css选择器response.css('li.classA::text').extract_first()2. 使用 xpath 选择器response.xpath('//li[@class&nbsp;=&nbsp;"classA"]/text()').extract_first()

交互式爱情

简单:response.css('li::text').extract_first()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python