Die folgende (von "Tauchen Sie ein in Python")robust DOM mit getElementsByTagName Parsen
from xml.dom import minidom
xmldoc = minidom.parse('/path/to/index.html')
reflist = xmldoc.getElementsByTagName('img')
fehlgeschlagen mit
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/path/to/htmlToNumEmbedded.py", line 2, in <module>
xmldoc = minidom.parse('/path/to/index.html')
File "/usr/lib/python2.7/xml/dom/minidom.py", line 1918, in parse
return expatbuilder.parse(file)
File "/usr/lib/python2.7/xml/dom/expatbuilder.py", line 924, in parse
result = builder.parseFile(fp)
File "/usr/lib/python2.7/xml/dom/expatbuilder.py", line 207, in parseFile
parser.Parse(buffer, 0)
xml.parsers.expat.ExpatError: mismatched tag: line 12, column 4
Mit lxml
, die von http://www.ianbicking.org/blog/2008/12/lxml-an-underappreciated-web-scraping-library.html empfohlen wird, können Sie das Dokument analysieren, aber es scheint kein getElementsByTagName
zu haben. Die folgenden Werke:
from lxml import html
xmldoc = html.parse('/path/to/index.html')
root = xmldoc.getroot()
for i in root.iter("img"):
print i
aber scheint kludgey: Gibt es eine eingebaute Funktion, die ich übersehen?
Oder eine andere elegantere Art zu haben robustes DOM-Parsing mit getElementsByTagName?