2016-08-15 5 views
1

Von dieser Webseite: page Ich versuche einen Crawler zu erstellen, der "Μακεδονία> Ν. Ημαθίας> Δ. Δοβρά" aus dem Feld "Περιοχή:"."XPath-Fehler: Ungültiges Prädikat" erhalten, während versucht wird, einen Xpath zu verwenden, der griechische Buchstaben enthält

-> Bildschirmfoto des Elements Siehe: Siehe Link unten No.2

Um dies zu tun, ich soll XPath verwenden, auf das konzentrieren „Περιοχή:“ und dann die folgenden- verwenden Geschwister-Schlüsselwort, um auf den Text "Μακεδονία> Ν. Ημαθίας> Δ. Δοβρά" zuzugreifen und ihn zu extrahieren, weil der td, der ihn enthält, an anderer Stelle in anderen Webseiten sein kann (aber immer nach dem tr mit dem Text "Περιοχή:") oder sogar fehlt. Siehe Link unten No.3


In scrapy Shell Ich teste folgendes:

x = response.xpath(u"//th[@text()=u'Περιοχή:']/text()").extract() 

erwarten zu erhalten x = [u "Περιοχή:"]

sondern ich bin Fehlermeldung:

ValueError: XPath error: Invalid predicate in //th[@text()=u'\u03a0\u03b5\u03c1\u03b9\u03bf\u03c7\u03ae:']/text() 

Was mache ich falsch?

Vielen Dank im Voraus.

+0

Link Nr.2: http://i.stack.imgur.com/yChN3.png – errorLogger

+0

Link Nr.3: http://i.stack.imgur.com/Fnd9M.png – errorLogger

Antwort

2

Sie geben die Unicode-Codierung zweimal an. Sie sollten dies nicht in xpath angeben, da es bereits eine Unicode-Zeichenfolge ist.

heißt

# this: 
u"//th[@text()=u'Περιοχή:']/text()" 
# should be this: 
u"//th[text()='Περιοχή:']/text()" 

Hinweis keine u vor dem Text und Sie brauchen nicht @ vor text() entweder, weil es eine XPath-Funktion nicht ein Knotenattribut.

+0

Es funktioniert jetzt! Danke vielmals! – errorLogger

Verwandte Themen