Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 27, 2013 02:43:40

Dartanyan
Зарегистрирован: 2013-01-27
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопрос по регулярке.

Чуствую себя идиотом, выдает пустой список.

<div class="b-result__task"><div class="g-line"><div class="b-static-text">
                                  Сколько рублей сдачи она должна получить с 200 рублей?
                               </div></div></div>
Сам код с регуляркой
print re.findall(r'class="b-static-text">\n(.*?)</div>', render_html(answer[i]))
код в котором ищет.
<div class="b-result g-js b-result_js_inited" onclick="return {name:'b-result'}"><div class="b-result__task"><div class="g-line"><div class="b-static-text">
                                  Сколько рублей сдачи она должна получить с 200 рублей?
                               </div></div></div><img class="b-ico b-ico_type_answer b-ico_state_skip" src="//yandex.st/lego/_/La6qi18Z8LwgnZdsAr1qy1GwCwo.gif" alt=""><div class="b-result__answer"><div class="b-result__label">Вы пропустили вопрос</div></div>

где я туплю, едрен батон (.

Update
Сработало так:
print re.findall(r'class="b-static-text">\n(.*?)\n.*?</div>', render_html(answer[i]))[0]
но не устраивает , вдруг будет несколько \n

Отредактировано Dartanyan (Янв. 27, 2013 02:53:37)

Офлайн

#2 Янв. 27, 2013 03:13:11

pyuser
От:
Зарегистрирован: 2007-05-13
Сообщения: 658
Репутация: +  36  -
Профиль   Отправить e-mail  

Вопрос по регулярке.

А если убрать переводы строки из регулярки и применить strip к результату?

ЗЫ. для парсинга html лучше применять специализированные инструменты, lxml+cssselect например.

from lxml import html
doc = html.fromstring("...")
for answer in doc.cssselect("div.b-static-text"):
    print(answer.text.strip())



Офлайн

#3 Янв. 27, 2013 03:19:09

Dartanyan
Зарегистрирован: 2013-01-27
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопрос по регулярке.

Как задать cssselect div несколько классов?
P.S.
К моему сожалению использовать lxml, чтоб красиво парсить не выйдет, так как там простыня, а во вторых местами отсутствуют строки.

Отредактировано Dartanyan (Янв. 27, 2013 04:04:18)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version