LINUX.ORG.RU

[pyqt, lxml] Затеял писать читалку ЛОРа, как лучше обработать html


1

3

В качестве учебного задания при освоении гуи тулкитов решил сделать читалку лора. Изначально решил использовать pygtk, но модуль python-gtkhtml помер, и соответственно отобразить html нет возможности. Конечно можно сделать разбор тегов и более менее похожее форматирование в gtk.textview, но все равно получится фигня. Поэтому я решил сменить тулкит на pyqt.

Руками выдрал одно сообщение из треда, загрузил в QTextBrowser, ссылки кажет, форматирование есть, короче говоря - то, что нужно.

html я решил обрабатывать следующим образом:
Качаем страницы тредов и выкусываем из них минимально необходимый html отдельного сообщения для отображения в QTextBrowser, строим дерево пост-ответ-на-пост и т.д. и отображаем его в QTreeView. При выборе строки в qtreeview берем соответствующий кусок html и отображаем его в QTextBrowser.

Для разбора html я использую lxml, тут то и встает вопрос - как при помощи lxml получить по xpath необходимый кусок сырого html содержащий пост?

Если с lxml не выйдет, то что из родного кутишного позволит осуществить это?


pywebkitgtk ты конечно не заметил, да?!

fat_angel ★★★★★ ()

А для получения «сырого» html из lxml рекомендую использовать pretty print соответствующей ветки дерева.

fat_angel ★★★★★ ()
Ответ на: комментарий от vertexua

А чего гениального то? Биндинг как биндинг. Есть еще gtkmozembed-python для зулранера.

fat_angel ★★★★★ ()
Ответ на: комментарий от fat_angel

Я твоего поста не заметил. Это я топикстартеру отвечал

vertexua ★★★☆☆ ()
Ответ на: комментарий от fat_angel

webkit это полноценный движок браузера, я хочу отделаться малой кровью - просто виджетом который показывает html. использование вебкита не отменяет тот факт, что нужно как-то выбирать пост из страницы для отображения (читалку то я хочу с древовидным отображением).

PoMbl4 ()
Ответ на: комментарий от PoMbl4

Ну ты сказал что тебе нужно отображать html. Мы тебе сказали как, при том что тут будет весь функционал, а если городить велосипеды, то может случится bump и прийдется все переписывать.

А html парсить - самое кривое решение. Если уж хочешь читалку ЛОРа, то это опенсорц, можешь предложить свой патч к исходниками ЛОРа, который добавляет доступ через вебсервис

vertexua ★★★☆☆ ()
Ответ на: комментарий от PoMbl4

>webkit это полноценный движок браузера

А не пофиг ли? HTML отображает и ладно, хотя потребление памяти… <fat>Но кто, кроме красноглазых, в наше время обращает на такие мелочи внимание.</fat>

fat_angel ★★★★★ ()

Лучше гейт в NNTP сделайте.

Теги: платиновые треды ЛОР

anonymous ()
Ответ на: комментарий от fat_angel

Зато он корректно работает, а не как всякие поделки костыльные

vertexua ★★★☆☆ ()
Ответ на: комментарий от fat_angel

Спасибо, pretty print помог.

vertexua (25.12.2010 13:57:33)

Ну ты сказал что тебе нужно отображать html. Мы тебе сказали как, при том что тут будет весь функционал, а если городить велосипеды, то может случится bump и прийдется все переписывать.


Это прежде всего учебная задача, и сразу погружаться в вебкиты мне совсем не хочется.

А html парсить - самое кривое решение. Если уж хочешь читалку ЛОРа, то это опенсорц, можешь предложить свой патч к исходниками ЛОРа, который добавляет доступ через вебсервис

Патч я предложить не могу, ибо не владею явой. Так что остается только парсить html и ждать спасителя.

PoMbl4 ()

как при помощи lxml получить по xpath необходимый кусок сырого html содержащий пост?

etree.tostring(elem) ?

baverman ★★★ ()
Ответ на: комментарий от baverman

И да, я бы на твоем месте не пользовался html движком, а почитал про xslt преобразования, если затея связана с учебой.

baverman ★★★ ()
Ответ на: комментарий от vertexua

У ТС же lxml, он строит вполне удобоваримые деревья для косого контента.

baverman ★★★ ()
Ответ на: комментарий от baverman

Ааа... Не знал. Теперь буду знать, может когда-то воспользуюсь

vertexua ★★★☆☆ ()
Ответ на: комментарий от baverman

Более того, я предполагал использовать xslt только для форматирования постов, например в pango markup. Процессинг всей страницы делать как-то слишком трудоемко, да и не нужно, и хрупковато к тому же.

baverman ★★★ ()

Мне пришлось написать свой конечный автомат чтобы парсить ЛОР. Стандартный пистоновский парсер html - бажный и отваливается посреди некоторых документов.

Absurd ★★★ ()

Дитятко, луче напиши на яве API к лору, тебе все спасибо скажут

хоть в виде новостных групп, главно что тогда можно будет не «парсить html» а юзать нормальные пути

wfrr ★★☆ ()
Ответ на: комментарий от Absurd

Если он будет хороший и полезный, то почему бы и нет?

mono ★★★★★ ()
Ответ на: комментарий от Absurd

> Стандартный пистоновский парсер html - бажный и отваливается посреди

некоторых документов.


Это который sgmllib.SGMLParser?

P.S. Для разбора XML советую python-libxml2.

pacify ★★★★★ ()
Ответ на: комментарий от lazyklimm

Гейт в джаббер я пишу jabber bot для ЛОРа для мобилы

Лучше помогите определиться с синтаксисом команд из джаббера.

Подписаться на ветку:
.subto:12345

Отписаться от ветки:
.unsub:12345

Ответить[bt] .replyto:12345[.23456] [.title: title of the message] .msg: message body in LORCODE format

12345 — msgid (для удобства можно дать короткий номер — таблица в базе джаббер бота)

в [] необязательные параметры.

Ваши предложения по системе команд.

sdio ★★★★★ ()
Ответ на: комментарий от hizel

Да, спасибо за пример, скорее всего так и сделаю.
 — отправлено из джабера.

sdio ★★★★★ ()

Сделал бы лучше сервис вроде жуйка, но для постинга и чтения лора.

tia ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.