2017-12-01 3 views
1
response.xpath('//*[@id="blah"]//text()') 

Angenommen, mein htmlAlles Text einschließlich HTML in einem einzigen Knoten scrapy XPath

<p id="blah">This is a simple text <a href="#">foo</a> and this is after tag. </p> 

ist Was geschieht ich eine Liste von Text erhalten, obwohl seine ein <p> Tag. Wie

[u'This is a simple text', u' and this is after tag.'] 

Mein eigentlicher HTML-Inhalt ist riesig und ich habe join zu tun, um dies zu erreichen. Auch ich verliere foo während join. Gibt es einen bestimmten Mechanismus dafür? xpathscrapy?

Ich möchte das Ergebnis erhalten Dies ist ein einfacher Text foo und das ist nach dem Tag.

Bitte beachten Sie auch die foo hier.

Dank

+1

https://stackoverflow.com/questio ns/40985060/scrapy-css-selector-get-text-von-allen-inneren-tags – furas

+0

auch für xpath? –

Antwort

1

Sie alle Textknoten als einzelne Zeichenfolge, wie unten bekommen:

response.xpath('//*[@id="blah"]')[0].text_content() 

Ausgang:

'This is a simple text foo and this is after tag. ' 
1

wenn es XPath 2 ist können Sie die Zeichenfolge-Join-Funktion verwenden

response.xpath('string-join(//*[@id="blah"]//text())') 
Verwandte Themen