需要帮助使Jython(dom4j)脚本更优雅:)

时间:2008-10-23 20:08:42

标签: jython refactoring dom4j

我已经开始使用Jython,因为它似乎是一种优秀的语言,并且已经证明是迄今为止。

我正在使用dom4j来操作和检索我在磁盘上的一堆HTML文件的DOM中的数据。我编写了下面的脚本来检查使用Xpath将DOM强加到 H1 标签并抓取文本,如果DOM中没有 H1 标记,则会搜索< strong> title 标记并从中获取文本。

我对Jython很新,但我确信有办法比以下方法更优雅地执行所需的任务。如果我正确地想到这一点,是否有人可以告诉我更好的方法它?

elemHolder = dom.createXPath('//xhtml:h1')
elemHolder.setNamespaceURIs(map)
elem = elemHolder.selectSingleNode(dom)
if elem != None:
    h1 = elem.getText()
else:
    elemHolder = dom.createXPath('//xhtml:title')
    elemHolder.setNamespaceURIs(map)
    elem = elemHolder.selectSingleNode(dom)
    if elem != None:
        title = elem.getText()
    else:
        title = "Page does not contain a H1 or title tag"

如果有人能提供帮助,那就太好了。干杯

2 个答案:

答案 0 :(得分:2)

这个怎么样(顺便说一句,我并不认为对Python有太多了解,但这看起来是显而易见的第一步):

for path in ('//xhtml:h1', '//xhtml:title'):
    elemHolder = dom.createXPath(path)
    elemHolder.namespaceURIs = map
    elem = elemHolder.selectSingleNode(dom)
    if elem is not None:
        return (elem.localName, elem.text)

return (None, "Page does not contain h1 or title tag")

答案 1 :(得分:0)

看起来它会完美运作,只有其他的东西。我将把值传递给数据库,并根据在相应列中找到它的内容。

如果它是H1标签,它会把它放在H1栏中,如果是标题标签,它会被放在标题栏中。

有没有办法确定哪些标签也被发现?这有意义吗?

相关问题