Найти - Пользователи
Полная версия: гаджет RSS
Начало » Python для новичков » гаджет RSS
1
buddha
всем привет.

Очень хочется написать гаджет для Windows 7.
Гаджет должен уметь:
-добавлять/удалять RSS(лент новостей).
-хранить список RSS. Т.е. при входе/выходе из операционки не приходилось снова добавлять url.
-иметь поле для отображения тем новостей, с возможностью проматывания списка(если новостей много)
-по нажатию на тему новости, выводить краткое содержание(обычно первый абзац всего текста)

Питонист я не опытный. Хочу на этом примере прокачать свой skill.
какие модули мне могут в этом помочь? С чего лучше начать(например просто повозращать данные без графического интерфейса)?
есть ли примеры подобного?
sanodin
Набери “парсер”-примеров полно в НЕТе и на форуме
buddha
спасибо за подсказку
вот отыскал модуль http://grablib.org/docs/
начну с него
buddha
вот код, который достает с сайта название топика
import grab 
g=grab.Grab() #создал объект класса Grab
g.setup(log_dir='D:/') #настройка для сохранения данных запроса/ответа и самой страницы
g.go('habrahabr.ru') #запрос на нужную страничку
for elem in g.xpath_list('//h2/a[@class="blog_title blogs"]'): #ВОТ ТУТ ВОПРОС
print elem.text
print elem.get('href')
объясните какой объект/тип возвращает xpath??? или список xpath_list???

чтобы понять как дальше работать, какими методами и т.п.
т.е. что есть TEXT и GET(''HREF), какого класса эти методы
разбирался в pyCharm и читал документацию. Понял , что надо копаться в lxml…
подскажите.
buddha
import grab
g=grab.Grab()
g.setup(log_dir='D:/')
g.go('https://xakepy.cc/external.php?type=RSS2')
for listElement in g.xpath_list('//item'): #я так понял тэг item подразумевает темки на форуме
print '----------------------------'
for Element in listElement: #выбираем из списка тем текст нужных тегов
print Element.xpath_text('//title')
print Element.xpath_text('//description')
немного поизучал модуль lxml, дофига чего неясно. Проще поэкспериментировать, быстрее будет.
Подскажите, может это как то можно сделать универсальныее/проще???
и как бы вы сделали проверку URL(например www.ya.ru) на то , что она не является RSS и наоборот???
buddha
from bs4 import BeautifulSoup
import urllib2
page = urllib2.urlopen('http://forum.hackzona.ru/external.php?type=RSS2')
soup = BeautifulSoup(page)
for item in soup('item'):
print '----------------------------------------------------'
#print type(item)
print item.title.string
print item.description.string
почему возвращает None, когда текст в тэгах на сайте начинается с <![CDATA]>???
pyuser
Как-то сложно все у Вас, попробуйте так:
import re
import urllib2

from lxml import etree

NS = re.compile(r"\{.*?\}", re.M)
HTML = re.compile(r"<.*?\>", re.M)
RN = re.compile("(\r?\n)+", re.M)

def parse_rss():
page = urllib2.urlopen("http://forum.hackzona.ru/external.php?type=RSS2")

def clear(text):
return RN.sub("\n", HTML.sub("", text.replace("<br />", "\n"))).strip()

events = ("end",)
for action, elem in etree.iterparse(page, events=events):
if elem.tag == 'item':
yield {NS.sub("", child.tag): clear(child.text) for child in elem}

if "__main__" == __name__:
for topik in parse_rss():
print(topik["pubDate"])
print(topik["title"])
print(topik["description"])
print(topik["encoded"])
print("-" * 79)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB