2017-04-26 2 views
1

Ich habe HTML-Absätzen wie folgt aus:Scrapy: wie der Text eines Tags in einem anderen Tag bekommen

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

Ich versuche, den ganzen Text innerhalb des p zu erhalten. Sogar der Teil im starken Tag. habe ich versucht, den Code unten, aber ich bekomme nur „Hallo“ .:

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

Ich habe auch versucht erstes Kind wie in CSS, aber dieses Mal nichts zurückgegeben:

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

Edit: Statt stark Es könnte ein anderes Tag sein. So ist das Ziel wäre, das erste Kind zu bekommen Text

+0

die CSS-Tag wird hier nicht helfen;) –

Antwort

3

Hier ist ein funktionierendes Beispiel:

>>> 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" 
Verwandte Themen