lxml xpath Problem

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
StefanLawl
User
Beiträge: 92
Registriert: Donnerstag 7. Juni 2012, 20:23

Ich würde gerne das Wetter von http://www.wetter.com/wetter_aktuell/ak ... 02989.html auslesen. :mrgreen:

Der entscheidende Teil:

Code: Alles auswählen

<div class="weatherWidgetBoxLeft-weathericon-big">
            <div class="wstate_large d_63_L">
                                    <div class="tooltip">
                                        <div class="weatherSpanner trigger" style="top: 20px;position:absolute; width:140px" offsetx="40" offsety="40">
                                        </div>
                                        <div class="tipbox popup">
                                            <span class="tiparrow"></span>
                                            <div class="suntipouter">
                                                <div class="suntipinfo">
                                                    <div class="image">
                                                        <div class="wstate_small d_63_S"></div>
                                                    </div>
                                                    <div class="text">
                                                        <span class="sonig">mäßiger Regen</span>
                                                        Niederschlag in flüssiger Form in einem Gebiet >10km² und länger als 45 Minuten (auch mit Unterbrechungen), Tröpfchengröße 0,6 bis 3 mm, Regenmengen zwischen 0,5 und 4 Liter/Stunde
                                                    </div>
                                                </div>
                                            </div>
                                        </div>
                                    </div>
            </div>
                </div>
Mein Code:

Code: Alles auswählen

from lxml import html
url = 'http://www.wetter.com/wetter_aktuell/aktuelles_wetter/deutschland/frankfurt/DE0002989.html'
doc = html.parse(url)
print doc.xpath('//span[@class="sonig"]/text()/')
Error:

Code: Alles auswählen

print doc.xpath('/span[@class="sonig"]/text()/')
  File "lxml.etree.pyx", line 2097, in lxml.etree._ElementTree.xpath (src\lxml\lxml.etree.c:52202)
  File "xpath.pxi", line 374, in lxml.etree.XPathDocumentEvaluator.__call__ (src\lxml\lxml.etree.c:126556)
  File "xpath.pxi", line 242, in lxml.etree._XPathEvaluatorBase._handle_result (src\lxml\lxml.etree.c:125156)
  File "xpath.pxi", line 228, in lxml.etree._XPathEvaluatorBase._raise_eval_error (src\lxml\lxml.etree.c:125025)
lxml.etree.XPathEvalError: Invalid expression
Ich habe lxml noch kaum benutzt, also bitte ich um Verständnis :/

Stefan

Edit: Kaum hab ich's gepostet und 3 Minuten weiterprobiert, habe ich folgende Lösung:

Code: Alles auswählen

print doc.xpath('//span[@class="sonig"]/text()')
Man sagt uns wir sollen der Idee gedenken und nicht des Mannes. Denn ein Mensch kann versagen. Er kann gefangen werden. Er kann getötet und vergessen werden. Aber 400 Jahre später kann eine Idee immer noch die Welt verändern.
-V
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Ich würde da einfach CSS Selektoren nutzen, die lxml auch unterstützt, deine Abfrage wäre dann etwa "span.sonig" was ja deutlich einfacher ist als die XPath-Anweisung.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
StefanLawl
User
Beiträge: 92
Registriert: Donnerstag 7. Juni 2012, 20:23

Leonidas hat geschrieben:Ich würde da einfach CSS Selektoren nutzen, die lxml auch unterstützt, deine Abfrage wäre dann etwa "span.sonig" was ja deutlich einfacher ist als die XPath-Anweisung.
Danke für den Tipp, ich versuche gerade mit xpath klar zukommen, ich habe ja schon damit Probleme :P
Man sagt uns wir sollen der Idee gedenken und nicht des Mannes. Denn ein Mensch kann versagen. Er kann gefangen werden. Er kann getötet und vergessen werden. Aber 400 Jahre später kann eine Idee immer noch die Welt verändern.
-V
Antworten