Scrapy: использование селекторов CSS для исключения узла / тега - PullRequest
0 голосов
/ 24 января 2019

В документации и статьях 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()

, но я все еще получаю исключенные узлы.

Ответы [ 2 ]

0 голосов
/ 24 марта 2019

Это очень просто:

1. Использование css selector

response.css('li.classA::text').extract_first()

2. Использование селектора xpath

response.xpath('//li[@class = "classA"]/text()').extract_first()
0 голосов
/ 24 января 2019

Легко:

response.css('li::text').extract_first()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...