Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Primer prostog RSS Readera uz koriscenje Feedparser biblioteke

[es] :: Python & Zope :: Primer prostog RSS Readera uz koriscenje Feedparser biblioteke

[ Pregleda: 2459 | Odgovora: 5 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

BigBrother2005

Član broj: 54621
Poruke: 86
80.74.166.*

Sajt: sremcod.coconia.net


Profil

icon Primer prostog RSS Readera uz koriscenje Feedparser biblioteke20.09.2005. u 02:15

Code:

import feedparser
def hranilica(rss):
    kanal = feedparser.parse(rss)
    #print kanal.feed.link
    unos_br=0
    print "-----------------"
    print kanal.feed.title
    print "-----------------"
    for i in range (10):
        try:
            print kanal.entries[unos_br].title
            unos_br=unos_br+1
        except:
            print "nema vishe unosa"

for z in range (150):
    rss="http://www.elitesecurity.org/forum/"+str(z)+"/backend.xml"
    try:
        hranilica(rss)
    except:
        print "--------------------------"
        print "RSS kanal nije validan"
        print "--------------------------"

Ukoliko uspesno izvrsite ovaj kod trebalo bi da vam izlista sve feedove Elitesecurity-ja

Ovaj primer koristi biblioteku feedparser koju mozete skinuti sa: http://sourceforge.net/projects/feedparser/

Dokumentacija za ovaj modul se nalazi na:
http://feedparser.org/docs/


[code]
print "Hello"
[/code]

---------------------------------------
Ljudi traze znanje, a ja trazim burek
20.09.2005. u 02:15 

Ernest_Che
Zgembo Handislic
Vienna

Član broj: 40683
Poruke: 19
*.2.13.vie.surfer.at.



Profil

icon Re: Primer prostog RSS Readera uz koriscenje Feedparser biblioteke02.12.2008. u 16:21
Nije los
02.12.2008. u 16:21 

alex
Aleksandar Radulovic
Software Architect, Software Development, Síminn hf.
Reykjavik, Iceland

Administrator
Član broj: 71
Poruke: 2180
*.siminn.is.

Jabber: maurice.chavez@gmail.com
ICQ: -1
Sajt: www.a13x.info


Profil

icon Re: Primer prostog RSS Readera uz koriscenje Feedparser biblioteke11.12.2008. u 09:59
Autor feedparser-a je drugar Mark Pilgrim, koji je pre vise od godinu ipo dana prebacio svoj kôd sa Sourceforge servera na Google Code. Najnoviju verziju feedparsera mozete naci ovde...

Za one koji koriste setuptools dovoljno je u konzoli ukucati:

easy_install -U feedparser

Alex: My favorite site is http://localhost/
R.J. Oppenheimer: "I am become death, destroyer of worlds" (1945 AD)
tweet.13x || linkedin.13x
11.12.2008. u 09:59 

alex
Aleksandar Radulovic
Software Architect, Software Development, Síminn hf.
Reykjavik, Iceland

Administrator
Član broj: 71
Poruke: 2180
*.siminn.is.

Jabber: maurice.chavez@gmail.com
ICQ: -1
Sajt: www.a13x.info


Profil

icon Re: Primer prostog RSS Readera uz koriscenje Feedparser biblioteke11.12.2008. u 11:33
Tek sad pogledah kôd i primetih koliko u stvari nije pythonic.

Pre svega, ta varijabla unos_br je skroz nepotrebna, jer kanal.entries je list tip podatka, koji podrzava iteratore, tako da je dovoljno upotrebiti konstrukciju:
for entry in kanal.entries:
cime ces u petlji imati raspolozivu varijably entry, a takodje nema potrebe za hvatanjem izuzetaka (sa try/catch) jer koristeci iterator nije moguce dobiti izuzetak u tom kontekstu. S druge strane, izuzetak koji bi trebalo da se hvata i resi je UnicodeEncodeError, jer prosto stampanje naslova ce da prijavi taj izuzetak.

Evo modifikovane hranilica() funkcije:
Code:

def hranilica(rss):
    kanal = feedparser.parse(rss)
    print "-" * 20
    print "%s [%d]" % (kanal.feed.title.encode("utf-8"), len(kanal.entries))
    print "-" * 20
    for entry in kanal.entries:
        print entry.title.encode("utf-8")


Ukoliko zelis samo 10 unosa iz kanal.entries, modifikuj for petlju da iz liste izvuce potreban deo (tzv. list slicing), i to ovako:
for entry in kanal.entries[:10].

Ne mogu da se setim da li u RSS feed-ovima na ES-u postoji feed koji vraca listu foruma, jer ako postoji onda se for petlja u kojoj pozivas funkciju hranilica moze dodatno prepraviti.

Mada, ukoliko zelis da ti kôd bude bas napredan python, onda tu for petlju mozes zameniti prostijom konstrukcijom, koristeci map() funkciju i tzv. list comprehensions:
Code:

rss = "http://www.elitesecurity.org/forum/%d/backend.xml"
map(hranilica, [rss % x for x in range(150)])


Eto, sad je kôd pythonic, i izgleda ovako:
Code:

def hranilica(rss):
    kanal = feedparser.parse(rss)
    print "-" * 20
    print "%s [%d]" % (kanal.feed.title.encode("utf-8"), len(kanal.entries))
    print "-" * 20
    for entry in kanal.entries[:10]:
        print entry.title.encode("utf-8")

if __name__ == '__main__':
    rss = "http://www.elitesecurity.org/forum/%d/backend.xml"
    map(hranilica, [rss % x for x in range(150)])


Toliko od mene :)

Alex: My favorite site is http://localhost/
R.J. Oppenheimer: "I am become death, destroyer of worlds" (1945 AD)
tweet.13x || linkedin.13x
11.12.2008. u 11:33 

Au197/79
Zlatan Kadragić
NBGD

Član broj: 3556
Poruke: 649
195.252.110.*

Sajt: aurelije.blogspot.com


Profil

icon Re: Primer prostog RSS Readera uz koriscenje Feedparser biblioteke11.12.2008. u 12:02
A neLISP Python programer bi poslednju liniju napisao kao:
Code:
[hranilica(rss % x) for x in range(150)]



Bolje džaba ležat nego džaba radit.
11.12.2008. u 12:02 

alex
Aleksandar Radulovic
Software Architect, Software Development, Síminn hf.
Reykjavik, Iceland

Administrator
Član broj: 71
Poruke: 2180
*.siminn.is.

Jabber: maurice.chavez@gmail.com
ICQ: -1
Sajt: www.a13x.info


Profil

icon Re: Primer prostog RSS Readera uz koriscenje Feedparser biblioteke11.12.2008. u 13:11
Hehe, naravno da moze , cak je i brze jer se lista jednom kreira, ali nisam hteo da plasim publiku
Alex: My favorite site is http://localhost/
R.J. Oppenheimer: "I am become death, destroyer of worlds" (1945 AD)
tweet.13x || linkedin.13x
11.12.2008. u 13:11 

[es] :: Python & Zope :: Primer prostog RSS Readera uz koriscenje Feedparser biblioteke

[ Pregleda: 2459 | Odgovora: 5 ]

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.