Wie verwende ich Xpath in Python?


4 Answers

Das lxml-Paket unterstützt xpath. Es scheint ziemlich gut zu funktionieren, obwohl ich einige Probleme mit der self :: Achse hatte. Es gibt auch Amara , aber ich habe es nicht persönlich benutzt.

Question

Was ist die Bibliothek? Gibt es eine vollständige Implementierung? Wie wird die Bibliothek verwendet? Wo ist seine Website?




Verwenden Sie LXML. LXML verwendet die volle Leistung von libxml2 und libxslt, umschließt sie jedoch in mehr "Pythonic" -Bindungen als die Python-Bindungen, die in diesen Bibliotheken enthalten sind. Als solches erhält es die vollständige XPath 1.0-Implementierung. Native ElementTree unterstützt eine begrenzte Teilmenge von XPath, obwohl es für Ihre Bedürfnisse gut genug sein könnte.




Sie können verwenden:

PyXML :

from xml.dom.ext.reader import Sax2
from xml import xpath
doc = Sax2.FromXmlFile('foo.xml').documentElement
for url in xpath.Evaluate('//@Url', doc):
  print url.value

libxml2 :

import libxml2
doc = libxml2.parseFile('foo.xml')
for url in doc.xpathEval('//@Url'):
  print url.content



PyXML funktioniert gut.

Sie haben nicht gesagt, welche Plattform Sie verwenden, aber wenn Sie auf Ubuntu sind, können Sie es mit sudo apt-get install python-xml . Ich bin mir sicher, dass es auch andere Linux-Distributionen haben.

Wenn Sie auf einem Mac arbeiten, ist Xpath bereits installiert, aber nicht sofort zugänglich. Sie können PY_USE_XMLPLUS in Ihrer Umgebung PY_USE_XMLPLUS oder die Python-Methode ausführen, bevor Sie xml.xpath importieren:

if sys.platform.startswith('darwin'):
    os.environ['PY_USE_XMLPLUS'] = '1'

Im schlimmsten Fall müssen Sie es vielleicht selbst bauen. Dieses Paket wird nicht mehr gewartet, aber es funktioniert immer noch gut und funktioniert mit modernen 2.x Pythons. Grundlegende Dokumente sind here .




Sie können den einfachen soupparser von lxml

Beispiel:

from lxml.html.soupparser import fromstring

tree = fromstring("<a>Find me!</a>")
print tree.xpath("//a/text()")



Related