2008-10-23 39 views
0

我已经开始使用Jython,因为它似乎是一种优秀的语言,并且已被证明是迄今为止。需要帮助使Jython(dom4j)脚本更优美:)

我正在使用dom4j来处理和检索我在磁盘上的一堆HTML文件的DOM中的数据。我已经写了下面的脚本来检查扔DOM使用Xpath H1标签和抓取文本,如果H1标记不存在于DOM中,它然后搜索标题标记并从中抓取文本。

我对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

这个怎么样(我不声称很了解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") 
+0

我得到了这个概念,并调整了它的工作。干杯队友 – RailsSon 2008-10-23 21:37:15

0

这看起来像它会很好地工作,只其他的事情是。我会将这个值传递给数据库,并根据发现它放在适当的列中。

如果它的H1标签将它放在H1列中,并且如果它的标题标签将被放入标题列中。

有没有一种方法来确定哪些标签也被发现?这有意义吗?

+0

是的,我现在让这个函数返回一个元组,其中第一个元素是标签名,第二个元素是结果。 – 2008-10-23 20:40:30