Scrapy:如何在另一个标签内获取标签的文本

时间:2017-04-26 15:58:12

标签: python html css scrapy

我有这样的html段落:

<p>Hello <strong>I'm G </strong></p>

我试图获取p中的所有文本。即使是强力标签中的部分。 我尝试了下面的代码,但我只得到了#34; Hello&#34 ;.:

for text in response.css("div.entry-content"):
        yield {
            "parag": text.css("p::text").extract(),
        }

我也尝试过像css这样的第一个孩子,但这次没有回复:

"parag": text.css("p:strong::text").extract()

编辑:它可能是另一个标签,而不是强大的。因此,目标是获得第一个子文本

1 个答案:

答案 0 :(得分:3)

这是一个有效的例子:

>>> from scrapy.http import HtmlResponse
>>> response = HtmlResponse(url="Test HTML String", body="<p>Hello <strong>I'm G </strong> <b>I write code</b></p>")

# First child
>>> ' '.join(t.strip() for i, t in enumerate(response.css('p ::text').extract()) if i< 2).strip()
u"Hello I'm G"

# All child
>>> ' '.join(t.strip() for t in response.css('p ::text').extract()).strip()
u"Hello I'm G  I write code"