gpt4 book ai didi

python - 使用 getElementsByTagName 进行稳健的 DOM 解析

转载 作者:太空宇宙 更新时间:2023-11-03 16:47:48 24 4
gpt4 key购买 nike

以下内容(来自“深入了解 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'))

关于python - 使用 getElementsByTagName 进行稳健的 DOM 解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36155590/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com