Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 6, 2012 10:23:50

dorian
От:
Зарегистрирован: 2006-05-18
Сообщения: 79
Репутация: +  0  -
Профиль   Отправить e-mail  

Lxml+XPath 2.0 функции

Вопрос знатокам XPath
Есть строка вида

['8.07/8.12']
Задача получить подстроку до слеша (или после слеша). В спецификации XPath есть функции substring-before и substring-after, которые теоретически должны с успехом эту задачу выполнить. Есть XPath:
>>> page.xpath("./*//div[@class='currency_div']/div[@class='val'][1]/ul/li[3]/text()[1][substring-before(.,'/')]")
не работает, получаем тоже самое что и без substring-before(.,'/'). Пробовал по всякому - результат тот же.



Отредактировано dorian (Июнь 6, 2012 10:33:07)

Офлайн

#2 Июнь 6, 2012 11:39:34

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

Lxml+XPath 2.0 функции

То, что находится в скобках

[]
это дополнительное условие выборки.

Чтобы получить сам текст, нужно вызывать примерно так:
In [1]: import lxml.html
 
In [2]: content = '''<div class="val">8.07/8.12</div>'''
 
In [3]: doc = lxml.html.fromstring(content)
 
In [4]: doc.xpath('substring-before(//div[@class="val"],"/")')
Out[4]: '8.07'
 
In [5]: doc.xpath('//div[@class="val"]')[0].xpath('substring-before(.,"/")')
Out[5]: '8.07'

Офлайн

#3 Июнь 6, 2012 12:29:34

dorian
От:
Зарегистрирован: 2006-05-18
Сообщения: 79
Репутация: +  0  -
Профиль   Отправить e-mail  

Lxml+XPath 2.0 функции

reclosedev
То, что находится в скобках
[]
это дополнительное условие выборки.

Чтобы получить сам текст, нужно вызывать примерно так:
In [1]: import lxml.html
 
In [2]: content = '''<div class="val">8.07/8.12</div>'''
 
In [3]: doc = lxml.html.fromstring(content)
 
In [4]: doc.xpath('substring-before(//div[@class="val"],"/")')
Out[4]: '8.07'
 
In [5]: doc.xpath('//div[@class="val"]')[0].xpath('substring-before(.,"/")')
Out[5]: '8.07'
спасибо, работает



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version