Scrapy Python kann nicht extrahieren von text aus Klasse
Schauen Sie bitte diesen html-code:
<header class="online">
<img src="http://static.flv.com/themes/h5/img/iconos/online.png"> <span>online</span>
<img src="http://static.flv.com/themes/h5/img/iconos/ojo16.png"> 428 <p>xxfantasia</p>
</header>
Möchte ich, um den text hinein (428, in diesem Fall). Ich habe diese:
def parse(self, response):
sel = Selector(response)
cams = sel.css('header.online')
for cam in cams:
print cam.css('text').extract()
Ich denke ich habe die richtigen css-Selektor, aber ich bekam leeres Ergebnis.
Hilfe?
Du musst angemeldet sein, um einen Kommentar abzugeben.
CSS-Selektoren normalerweise nicht habe-syntax zu extrahieren von text-Inhalten.
Aber Scrapy erstreckt sich CSS-Selektoren mit den
::text
pseudo-element, so dass Sie verwenden möchtencam.css('::text').extract()
dass sollte Ihnen das gleiche wiecam.xpath('.//text()').extract()
Hinweis: Scrapy fügt auch die
::attr(attribute_name)
funktionale pseudo-element zu extrahieren, - Attribut mit dem Wert (auch das ist nicht möglich, mit standard-CSS-Selektoren)cam.css('header.online::text').extract()
Ergebnis wie dieses:[u' \n ', u' 428 ', u'\n ']
Wie ich, kann man nur[u'428']
?strip()
undfilter()
Methoden, zum Beispiel:filter(bool, [e.strip() for e in cam.css('header.online::text').extract()])