我有这样的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()
编辑:它可能是另一个标签,而不是强大的。因此,目标是获得第一个子文本
答案 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"