Нужна помощь в создании более изящного сценария Jython (dom4j) :) - PullRequest
0 голосов
/ 24 октября 2008

Я начал использовать Jython, так как он кажется превосходным языком, и доказал, что до сих пор.

Я использую dom4j для манипулирования и извлечения данных из DOM группы файлов HTML, которые есть на диске. Я написал нижеприведенный скрипт для проверки броска DOM с использованием Xpath для тегов H1 и захвата текста, если тег 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"

Если бы кто-нибудь мог помочь, было бы здорово. Приветствия

Ответы [ 2 ]

2 голосов
/ 24 октября 2008

Как насчет этого (кстати, я не претендую на то, что много знаю о 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 голосов
/ 24 октября 2008

Похоже, что это будет работать отлично, только другое. Я передам значение в базу данных и в зависимости от того, что было найдено, помещено в соответствующий столбец.

Если это тег H1, он помещает его в столбец H1, а если это тег заголовка, он помещается в столбец заголовка.

Есть ли способ определить, какой тег был найден? Имеет ли это смысл?

...