>>> import urllib
>>> html = urllib.urlopen('http://django-newbie.blogspot.com/').read()
>>> import html5lib
>>> from html5lib import treebuilders
>>> parser = html5lib.HTMLParser(tree=treebuilders.getTreeBuilder("beautifulsoup"))
>>> soup = parser.parse(html)
/usr/local/lib/python2.6/dist-packages/html5lib-0.11.1-py2.6.egg/html5lib/inputs
tream.py:367: DeprecationWarning: object.__init__() takes no parameters
>>> soup.findAll('link', {'type':'application/rss+xml'})[0]['href']
u'http://django-newbie.blogspot.com/feeds/posts/default?alt=rss'
воскресенье, 14 июня 2009 г.
Делаем правильный суп
По совету bw решил попробовать html5lib для решения заморочки с Beautifulsoup и получилось избавиться от некрасивого воркараунда (правда, ворнинг словился):
Подписаться на:
Комментарии к сообщению (Atom)
Непонятно, ты всё равно используешь html.replace, неужто без него никак?
ОтветитьУдалитьА что касается DeprecationWarning, то эта не наша забота :-). Должны исправить в будущем, библиотека развивается очень интенсивно.
..bw
Блин, ничего себе я лоханулся :)
ОтветитьУдалитьКопипаст маст дай!
(сейчас подправлю код)
А про deprecation - я тикет завёл, в хэде оно поправлено, только суповский парсер у них сейчас не работает - так что в следующем релизе всё должно быть без проблем вообще.
Я как с html5lib познакомился, решил стать религиозно-правильным и от супа вообще отказался, т.е. парсил в dom, а по dom'у уже ходил xpath'ем. Вообще от xpath'а я остался под большим положительным впечатлением, ребята знали, что делали. Хотя, безусловно, что бы начать его полноценно использовать потребуется время.
ОтветитьУдалитьСобственно. Я к тому что, если такая проблема проявляется только для супа, то я и не мог с ней столкнуться.
..bw
тоже вариант
ОтветитьУдалить