Jgaldos
Jgaldos

Reputation: 540

Scrapy css selector: get text of all inner tags

I have a tag and I want to get all the text inside available. I am doing this:

response.css('mytag::text')

But it is only getting the text of the current tag, I also want to get the text from all the inner tags.

I know I could do something like:

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

But I would like to do it with css selectors. How can I achieve this?

Upvotes: 38

Views: 29384

Answers (2)

Hassan Raza
Hassan Raza

Reputation: 3165

Get text of only selected node.

response.css('mytag::text')

Get text of selected node and its child nodes.

response.css('mytag ::text')

See the difference between these two versions. The only difference is the space. If there is no space then only text/attributes of current nodes are returned. If there is space then it selects text/attributes of self and child nodes

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

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

Upvotes: 17

eLRuLL
eLRuLL

Reputation: 18799

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

The * will visit all the inner tags of mytag and ::text will get the text of each of them

Upvotes: 60

Related Questions