以下内容(来自“深入了解 Python”)
from xml.dom import minidom
xmldoc = minidom.parse('/path/to/index.html')
reflist = xmldoc.getElementsByTagName('img')
失败
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
使用http://www.ianbicking.org/blog/2008/12/lxml-an-underappreciated-web-scraping-library.html推荐的lxml
,允许您解析文档,但它似乎没有 getElementsByTagName
。作品如下:
from lxml import html
xmldoc = html.parse('/path/to/index.html')
root = xmldoc.getroot()
for i in root.iter("img"):
print i
但似乎很困惑:是否有一个我忽略的内置函数?
或者另一种更优雅的方式来使用 getElementsByTagName 进行强大的 DOM 解析?
如果您想要一个 Element 列表,请对其调用 list
,而不是迭代 Element.iter
的返回值:
from lxml import html
reflist = list(html.parse('/path/to/index.html.html').iter('img'))
我是一名优秀的程序员,十分优秀!