如何使用XML DOM读取xhtml?

How to read xhtml using XML DOM?

提问人:Évariste Galois 提问时间:11/26/2017 最后编辑:Évariste Galois 更新时间:11/27/2017 访问量:264

问:

我有以下.xhtml文件: https://pastebin.com/GUykneib

它本质上是一个 shell 脚本中网站上的 bash wget,我需要提取有关某些股票的行信息。下面是一个示例:enter image description here

这是我的 Python 脚本:

import sys
import xml.dom.minidom

document = xml.dom.minidom.parse(sys.argv[1])

tableElements = document.getElementsByTagName('table')
for tr in tableElements[2].getElementsByTagName('tr'):
    data = []
    for td in tr.getElementsByTagName('td'):
        for a in td.getElementsByTagName('a'):
            for node in a.childNodes:
                if node.nodeType == node.TEXT_NODE:
                    data.append(node.nodeValue)
    print(data)

但是,当我在运行程序时传递 .xhtml 文件时,只打印一个空列表(只有一次,因为我遍历了 5 列,所以不应该至少是 5 次吗?我是XML DOM的新手,我的错误在哪里?

python xml 解析 dom xhtml

评论

0赞 Mr Lister 11/26/2017
该行应为 ,否则您将在 td 元素中查找 td 元素。XHTML 文件中没有这些内容。此外,您还需要第三个表,而不是 ;你最好找班级而不是任何桌子。for a in td.getElementsByTagName('td'):for a in td.getElementsByTagName('a'):tableElements[2]tableElements[0]mdcTable
0赞 Évariste Galois 11/27/2017
似乎我犯的愚蠢错误比什么都多,但我现在唯一的问题是访问后面的专栏。例如,“volume”列用 <td> 表示,但当我尝试遍历 td.childNodes 时,我没有得到任何输出。
0赞 Mr Lister 11/27/2017
每行中只有第一个 <td> 包含 <a>。

答: 暂无答案