2008-10-23 54 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