【问题标题】:Need help making Jython (dom4j) script more graceful :)需要帮助使 Jython (dom4j) 脚本更优雅:)
【发布时间】:2008-10-23 20:08:42
【问题描述】:

我已经开始使用 Jython,因为它似乎是一门优秀的语言,并且到目前为止已经证明是这样。

我正在使用 dom4j 从我在磁盘上的一堆 HTML 文件的 DOM 中操作和检索数据。我编写了下面的脚本来检查使用 Xpath 的 H1 标签和抓取文本的投掷 DOM,如果 H1 标签不存在于 DOM 中,它会搜索 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"

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

【问题讨论】:

    标签: jython refactoring dom4j


    【解决方案1】:

    这个怎么样(顺便说一下,我并没有声称自己对 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")
    

    【讨论】:

      【解决方案2】:

      看起来它会完美地工作,只有其他事情是。我会将值传递给数据库,并根据找到的内容将其放入相应的列中。

      如果是 H1 标签,它会将它放在 H1 列中,如果它是标题标签,它将放在标题列中。

      有没有办法确定也找到了什么标签?这有意义吗?

      【讨论】:

      • 是的,我现在让函数返回一个元组,第一个元素是标签名,第二个元素是结果。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-12
      • 2012-01-06
      相关资源
      最近更新 更多