Селектор scrapy css: получите текст всех внутренних тегов

У меня есть тег, и я хочу получить весь текст внутри. Я делаю это:

response.css('mytag::text')

Но он получает только текст текущего тега, я также хочу получить текст из всех внутренних тегов.

Я знаю, что могу сделать что-то вроде:

response.xpath('//mytag//text()')

Но я хотел бы сделать это с помощью селекторов css. Как я могу это достичь?

Ответ 1

response.css('mytag *::text')

* будет посещать все внутренние теги mytag, а ::text получит текст каждого из них

Ответ 2

Получить текст только выбранного узла.

response.css('mytag::text')

Получить текст выбранного узла и его дочерних узлов.

response.css('mytag ::text')

Посмотрите разницу между этими двумя версиями. Единственное различие - это пространство. Если нет места, тогда возвращаются только текст/атрибуты текущих узлов. Если есть пробел, тогда он выбирает текст/атрибуты собственных и дочерних узлов

response.css('h1 a::attr(href)') # only current node attribute

response.css('h1 ::attr(href)') # current node and all child nodes attribute.