2016-08-08 1 views
0

Ich muss nur 19.10 Wert in folgenden HTML extrahieren, aber meine XPath funktioniert nicht. Danke im Voraus.Entfernen Sie span von div aus einem Xpath-Selektor in Scrapy

<div class="class1">19.10 
     <span class="class2"><br></span> 
</div> 

Xpath:

//div[@class='class1'][not(preceding::span[@class='class2'])]/text() 

Ergebnis:

[u'19.10\n\t\t\t\t\t\t\t', u'\n\t\t\t\t\t\t'] 

Antwort

1

Sie möchten hier das erste Textelement erhalten. Es gibt einige Möglichkeiten, dies zu tun. Mit XPath:

"/div[@class='class1'][not(preceding::span[@class='class2'])]/text()[1]" 

oder mit Nachverarbeitung:

# just first element 
response.xpath("xpath").extract_first() 

oder wenn Sie sind vertraut mit Artikel Lader:

from scrapy.loader.processors import TakeFirst 
from scrapy.loader import ItemLoader 
class MyItemLoader(ItemLoader): 
    myfield_out = TakeFirst() 
ml = MyItemLoader() 
ml.add_xpath('myfield', 'xpath') 
+0

Es funktioniert sehr viel. – DevOps

1

Versuchen unter xPath: -

string(//div[@class='class1']) 

oder

(//div[@class='class1']/text())[1] 
+0

Es funktioniert vielen Dank. – DevOps

Verwandte Themen