Seite 1 von 1

lxml xpath Problem

Verfasst: Freitag 26. Oktober 2012, 07:56
von StefanLawl
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()')

Re: lxml xpath Problem

Verfasst: Freitag 26. Oktober 2012, 09:24
von Leonidas
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.

Re: lxml xpath Problem

Verfasst: Freitag 26. Oktober 2012, 14:52
von StefanLawl
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