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

Primer prostog RSS Readera uz koriscenje Feedparser biblioteke

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

[ Pregleda: 5551 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

BigBrother2005

Član broj: 54621
Poruke: 97

Sajt: sremcod.coconia.net


Profil

icon Primer prostog RSS Readera uz koriscenje Feedparser biblioteke20.09.2005. u 02:15 - pre 182 meseci
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
 
Odgovor na temu

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 - pre 143 meseci
Nije los
 
Odgovor na temu

alex
Aleksandar Radulovic
Senior Software Engineer, Spotify
Stockholm, Sweden

Član broj: 71
Poruke: 2194
*.siminn.is.

Jabber: alex@a13x.info
ICQ: -1
Sajt: www.a13x.info


+1 Profil

icon Re: Primer prostog RSS Readera uz koriscenje Feedparser biblioteke11.12.2008. u 09:59 - pre 143 meseci
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
 
Odgovor na temu

alex
Aleksandar Radulovic
Senior Software Engineer, Spotify
Stockholm, Sweden

Član broj: 71
Poruke: 2194
*.siminn.is.

Jabber: alex@a13x.info
ICQ: -1
Sajt: www.a13x.info


+1 Profil

icon Re: Primer prostog RSS Readera uz koriscenje Feedparser biblioteke11.12.2008. u 11:33 - pre 143 meseci
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
 
Odgovor na temu

Au197/79
Zlatan Kadragić
Minhen

Član broj: 3556
Poruke: 772
195.252.110.*

Sajt: aurelije.blogspot.com


+47 Profil

icon Re: Primer prostog RSS Readera uz koriscenje Feedparser biblioteke11.12.2008. u 12:02 - pre 143 meseci
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.
 
Odgovor na temu

alex
Aleksandar Radulovic
Senior Software Engineer, Spotify
Stockholm, Sweden

Član broj: 71
Poruke: 2194
*.siminn.is.

Jabber: alex@a13x.info
ICQ: -1
Sajt: www.a13x.info


+1 Profil

icon Re: Primer prostog RSS Readera uz koriscenje Feedparser biblioteke11.12.2008. u 13:11 - pre 143 meseci
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
 
Odgovor na temu

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

[ Pregleda: 5551 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

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