Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 27, 2012 13:14:46

agryn
От: Украина
Зарегистрирован: 2011-12-14
Сообщения: 189
Репутация: +  0  -
Профиль   Отправить e-mail  

xpath_list через тег br в найденом ноде ломаетса список

g.go('http://drlz.kiev.ua/ibp/ddsite.nsf/all/shlz1?opendocument&stype=7A203E58C7891C5EC22578B900347BA7')
lzdata = g.xpath_list('//tr[@valign="top"]/td[@bgcolor="F8F8F8"]/text()')

выражение
 (//tr[@valign="top"]/td[@bgcolor="F8F8F8"])
находит необходимый мне участок, но иногда в найденном участке кода есть тег <br> и тогда, список стает больше на количество тегов <br>, тоесть етот тег делит необходимый мне текст надвое. Ка мне сделать что б xpath_list игнорировал этот тег

Отредактировано agryn (Июнь 27, 2012 13:16:46)

Офлайн

#2 Июнь 27, 2012 17:47:49

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

xpath_list через тег br в найденом ноде ломаетса список

<br> вообще гадский тэг.
Есть вариант сделать запрос на узлы (без text()), а потом уже эти узлы превращать в текст:

lzdata = g.xpath_list('//tr[@valign="top"]/td[@bgcolor="F8F8F8"]')
for i, td in enumerate(lzdata):
    lzdata[i] = td.text_content()

Хотя, может и есть способ игнорировать <br>.

Отредактировано reclosedev (Июнь 27, 2012 17:48:06)

Офлайн

#3 Июнь 27, 2012 18:51:38

lorien
От:
Зарегистрирован: 2006-08-20
Сообщения: 755
Репутация: +  37  -
Профиль  

xpath_list через тег br в найденом ноде ломаетса список

А в чём проблема?

print ‘ ’.join(elem.xpath('…./text()'))

Или так:

elem = g.xpath('…./td')
for subnode in elem.xpath('br'):
subnode.getparent().remove(subnode)
print elem.text

Офлайн

#4 Июнь 27, 2012 20:21:36

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

xpath_list через тег br в найденом ноде ломаетса список

lorien
А в чём проблема?
По-моему, у ТС в lzdata должно быть количество элементов равное количеству строк в таблице, чтобы можно было установить соответствие.

Офлайн

#5 Июнь 28, 2012 13:47:54

agryn
От: Украина
Зарегистрирован: 2011-12-14
Сообщения: 189
Репутация: +  0  -
Профиль   Отправить e-mail  

xpath_list через тег br в найденом ноде ломаетса список

Хорошо, тогда подскажите как с полученного узла не удалить тег <br>, а заменить скажем на “; ”?

Офлайн

#6 Июнь 28, 2012 16:46:01

agryn
От: Украина
Зарегистрирован: 2011-12-14
Сообщения: 189
Репутация: +  0  -
Профиль   Отправить e-mail  

xpath_list через тег br в найденом ноде ломаетса список

lorien
print ‘ ’.join(elem.xpath('…./text()'))
До чего это? Я понятно сформулировал проблему, этот кусок кода выводит текст первого найденного элемента с пробелом между буквами.

lorien
elem = g.xpath('/…/td')
for subnode in elem.xpath('br'):
subnode.getparent().remove(subnode)
print elem.text
Я так понял эта конструкция должна была удалять тег <br>, но этот кусок кода не работает вообще.

Отредактировано agryn (Июнь 28, 2012 16:46:55)

Офлайн

#7 Июнь 28, 2012 19:50:56

lorien
От:
Зарегистрирован: 2006-08-20
Сообщения: 755
Репутация: +  37  -
Профиль  

xpath_list через тег br в найденом ноде ломаетса список

> До чего это? Я понятно сформулировал проблему, этот кусок кода выводит текст первого найденного элемента с пробелом между буквами.
Опечатался, там надо xpath_list использовать, а не xpath.

> Я так понял эта конструкция должна была удалять тег <br>, но этот кусок кода не работает вообще.
Ну так поправьте, чтоб заработала. Что значит не работает вообще? Вы предлагаете нам телепатически определить как именно она “не работает вообще”?

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version