Форум сайта python.su
0
Чуствую себя идиотом, выдает пустой список.
<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>
print re.findall(r'class="b-static-text">\n(.*?)\n.*?</div>', render_html(answer[i]))[0]
, вдруг будет несколько \n
Отредактировано Dartanyan (Янв. 27, 2013 02:53:37)
Офлайн
36
А если убрать переводы строки из регулярки и применить strip к результату?
ЗЫ. для парсинга html лучше применять специализированные инструменты, lxml+cssselect например.
from lxml import html doc = html.fromstring("...") for answer in doc.cssselect("div.b-static-text"): print(answer.text.strip())
Офлайн
0
Как задать cssselect div несколько классов?
P.S.
К моему сожалению использовать lxml, чтоб красиво парсить не выйдет, так как там простыня, а во вторых местами отсутствуют строки.
Отредактировано Dartanyan (Янв. 27, 2013 04:04:18)
Офлайн