|
|
Teraz jest 22 gru 2024 14:01:42
|
Polskie treści w calibre - komentarze
Autor |
Wiadomość |
Użytkownik
Dołączył(a): 21 mar 2011 17:12:46 Posty: 517 Lokalizacja: Gdańsk
eCzytnik: K3, K4, KT, KPW, M92B, Galaxy Note
|
Re: Polskie treści w calibre - komentarze
@brawurka2011, nie musisz pisać wielkimi literami. Recepta działa poprawnie, a nie pobiera nowych numerów dlatego, że te z 2012 są jeszcze zablokowane. Tutaj moja poprawka na ostatnie numery z 2011 | | | | Kod: #!/usr/bin/env python
__license__ = 'GPL v3' __copyright__ = '2010, matek09, matek09@gmail.com' __copyright__ = 'Modified 2011, Mariusz Wolek <mariusz_dot_wolek @ gmail dot com>'
from calibre.web.feeds.news import BasicNewsRecipe import re
class Wprost(BasicNewsRecipe): EDITION = 0 FIND_LAST_FULL_ISSUE = True EXCLUDE_LOCKED = True ICO_BLOCKED = 'http://www.wprost.pl/G/icons/ico_blocked.gif'
title = u'Wprost' __author__ = 'matek09' description = 'Weekly magazine' encoding = 'ISO-8859-2' no_stylesheets = True language = 'pl' remove_javascript = True
remove_tags_before = dict(dict(name = 'div', attrs = {'id' : 'print-layer'})) remove_tags_after = dict(dict(name = 'div', attrs = {'id' : 'print-layer'}))
'''keep_only_tags =[] keep_only_tags.append(dict(name = 'table', attrs = {'id' : 'title-table'})) keep_only_tags.append(dict(name = 'div', attrs = {'class' : 'div-header'})) keep_only_tags.append(dict(name = 'div', attrs = {'class' : 'div-content'})) keep_only_tags.append(dict(name = 'div', attrs = {'class' : 'def element-autor'}))'''
preprocess_regexps = [(re.compile(r'style="display: none;"'), lambda match: ''), (re.compile(r'display: block;'), lambda match: ''), (re.compile(r'\<td\>\<tr\>\<\/table\>'), lambda match: ''), (re.compile(r'\<table .*?\>'), lambda match: ''), (re.compile(r'\<tr>'), lambda match: ''), (re.compile(r'\<td .*?\>'), lambda match: '')]
remove_tags =[] remove_tags.append(dict(name = 'div', attrs = {'class' : 'def element-date'})) remove_tags.append(dict(name = 'div', attrs = {'class' : 'def silver'})) remove_tags.append(dict(name = 'div', attrs = {'id' : 'content-main-column-right'}))
extra_css = ''' .div-header {font-size: x-small; font-weight: bold} ''' #h2 {font-size: x-large; font-weight: bold} def is_blocked(self, a): if a.findNextSibling('img') is None: return False else: return True
def find_last_issue(self): soup = self.index_to_soup('http://www.wprost.pl/archiwum/?Y=2011') a = 0 if self.FIND_LAST_FULL_ISSUE: ico_blocked = soup.findAll('img', attrs={'src' : self.ICO_BLOCKED}) a = ico_blocked[-1].findNext('a', attrs={'title' : re.compile('Zobacz spis tre.ci')}) else: a = soup.find('a', attrs={'title' : re.compile('Zobacz spis tre.ci')}) self.EDITION = a['href'].replace('/tygodnik/?I=', '') self.cover_url = a.img['src']
def parse_index(self): self.find_last_issue() soup = self.index_to_soup('http://www.wprost.pl/tygodnik/?I=' + self.EDITION) feeds = [] for main_block in soup.findAll(attrs={'class':'main-block-s3 s3-head head-red3'}): articles = list(self.find_articles(main_block)) if len(articles) > 0: section = self.tag_to_string(main_block) feeds.append((section, articles)) return feeds
def find_articles(self, main_block): for a in main_block.findAllNext( attrs={'style':['','padding-top: 15px;']}): if a.name in "td": break if self.EXCLUDE_LOCKED & self.is_blocked(a): continue yield { 'title' : self.tag_to_string(a), 'url' : 'http://www.wprost.pl' + a['href'], 'date' : '', 'description' : '' }
| | | | |
_________________
|
12 sty 2012 18:19:45 |
|
|
Użytkownik
Dołączył(a): 09 sty 2012 15:04:50 Posty: 5
eCzytnik: Kindle Touch
|
Re: Polskie treści w calibre - komentarze
Dziękuje za odpowiedź !!!
|
13 sty 2012 1:28:58 |
|
|
Użytkownik
Dołączył(a): 17 maja 2011 20:06:17 Posty: 4
eCzytnik: kindle 3
|
Re: Polskie treści w calibre - komentarze
Czy mógłby mi ktoś wytłumaczyć jak napisać receptę używając funkcji parse_index, albo zrobić receptę do strony mp.pl ? Byłbym bardzo wdzięczny.
|
19 sty 2012 22:34:18 |
|
|
Użytkownik
Dołączył(a): 11 cze 2010 12:08:10 Posty: 126
eCzytnik: Kindle Paperwhite 2, Onyx Boox M92
|
Re: Polskie treści w calibre - komentarze
Jednak samiusieńkiego ostatniego numeru to nie chce ugryźć, więc zrobiłem taką podmiankę metody (oczywiście to też tylko chwilowe):
|
24 sty 2012 20:36:47 |
|
|
Użytkownik
Dołączył(a): 07 lis 2011 11:21:17 Posty: 20
eCzytnik: Nook ST, Kindle 4
|
Re: Polskie treści w calibre - komentarze
nowa recepta na Duży Format https://raw.github.com/luka6000/kalibra ... mat.recipeNie używa gazetowego, kiepskiego RSSa tylko parsuje bezpośrednio www. Pobiera również bieżącą okładkę, decyzja o pobraniu artykułu pobierana jest na podstawie daty ostatniej aktualizacji. Wyborcza ma tę stronę mało stabilną, więc mogą być zmiany. Oprócz tego, polecam zaktualizowaną Politykę https://raw.github.com/luka6000/kalibra ... yka.recipeoraz Atrament i Dwutygodnik https://raw.github.com/luka6000/kalibra ... ent.recipehttps://raw.github.com/luka6000/kalibra ... nik.recipePobieranie tych ostatnich zrobione jest w taki sposób, że niezależnie od formatu źródłowego (w tym wypadku epub), magazyn do biblioteki calibre trafia w zdefiniowanym przez użytkownika preferowanym formacie.
_________________ https://github.com/luka6000/kalibrator moje recepty calibre
|
28 sty 2012 1:54:26 |
|
|
Użytkownik
Dołączył(a): 21 mar 2011 17:12:46 Posty: 517 Lokalizacja: Gdańsk
eCzytnik: K3, K4, KT, KPW, M92B, Galaxy Note
|
Re: Polskie treści w calibre - komentarze
_________________
|
31 sty 2012 7:55:11 |
|
|
SwiatCzytnikow.pl
Dołączył(a): 14 sie 2010 11:00:21 Posty: 1873
eCzytnik: kindle, onyx, nook, kobo, pb, ipad
|
Re: Polskie treści w calibre - komentarze
Właśnie poczytałem przy śniadaniu, wszystko w porządku, jest troszkę śmieci (jak znaki </> na poczatku artykułu), ale o niebo lepiej niż przy starej wersji. Nie ma ilustracji, no ale DF jest teraz już w oficjalnej wersji GW w Amazonie, więc komu brakuje, może kupić.
_________________ http://swiatczytnikow.pl (dawniej: Świat Kindle) http://ebooki.swiatczytnikow.pl - (prawie) wszystkie polskie e-booki w jednym miejscu, czyli porównywarka ofert księgarni.
|
31 sty 2012 8:24:54 |
|
|
Użytkownik
Dołączył(a): 21 mar 2011 17:12:46 Posty: 517 Lokalizacja: Gdańsk
eCzytnik: K3, K4, KT, KPW, M92B, Galaxy Note
|
Re: Polskie treści w calibre - komentarze
_________________
|
31 sty 2012 17:49:50 |
|
|
Użytkownik
Dołączył(a): 03 maja 2011 16:20:28 Posty: 8
eCzytnik: Kindle
|
Re: Polskie treści w calibre - komentarze
Bo Kindle bardzo nie lubi stron obłożonych tagami <table></table> a poza tym tam jest jeszcze formatowanie <center> i mnóstwo obrazków. Na szybko: | | | | Kod: # -*- coding: utf-8 -*- from calibre.web.feeds.news import BasicNewsRecipe import re
class Nowa_Fantastyka(BasicNewsRecipe): title = u'Nowa Fantastyka' oldest_article = 7 __author__ = 'fenuks' __modified_by__ = 'zaslav' language = 'pl' encoding='latin2' description ='site for fantasy readers' category='fantasy' max_articles_per_feed = 100 INDEX='http://www.fantastyka.pl/' no_stylesheets=True needs_subscription = 'optional' remove_tags_before=dict(attrs={'class':'naglowek2'}) #remove_tags_after=dict(name='span', attrs={'class':'naglowek-oceny'}) remove_tags_after=dict(name='td', attrs={'class':'belka1-bot'}) remove_tags=[dict(attrs={'class':'avatar2'}), dict(name='span', attrs={'class':'alert-oceny'}), dict(name='img', attrs={'src':['obrazki/sledz1.png', 'obrazki/print.gif', 'obrazki/mlnf.gif']}), dict(name='b', text='Dodaj komentarz'),dict(name='a', attrs={'href':'http://www.fantastyka.pl/10,1727.html'})] preprocess_regexps = [(re.compile(r'style="display: none;"'), lambda match: ''), (re.compile(r'display: block;'), lambda match: ''), (re.compile(r'\<td\>\<tr\>\<\/table\>'), lambda match: ''), (re.compile(r'\<table .*?\>'), lambda match: ''), (re.compile(r'\<tr>'), lambda match: ''), (re.compile(r'\<td .*?\>'), lambda match: ''), (re.compile(r'\<img .*?\>'), lambda match: ''), (re.compile(r'\<center\>'), lambda match: ''), (re.compile(r'\<div align=\"center\" .*?\>'), lambda match: '')]
def find_articles(self, url): articles = [] soup=self.index_to_soup(url) tag=soup.find(attrs={'class':'belka1-tlo-m'}) art=tag.findAll(name='a', attrs={'class':'a-box'}) for i in art: title=i.string url=self.INDEX+i['href'] #date=soup.find(id='footer').ul.li.string[41:-1] articles.append({'title' : title, 'url' : url, 'date' : '', 'description' : '' }) return articles
def parse_index(self): feeds = [] feeds.append((u"Opowiadania", self.find_articles('http://www.fantastyka.pl/3.html'))) feeds.append((u"Publicystyka", self.find_articles('http://www.fantastyka.pl/6.html'))) feeds.append((u"Hype Park", self.find_articles('http://www.fantastyka.pl/9.html')))
return feeds
def get_cover_url(self): soup = self.index_to_soup('http://www.fantastyka.pl/1.html') cover=soup.find(name='img', attrs={'class':'okladka'}) self.cover_url=self.INDEX+ cover['src'] return getattr(self, 'cover_url', self.cover_url)
def get_browser(self): br = BasicNewsRecipe.get_browser() if self.username is not None and self.password is not None: br.open('http://www.fantastyka.pl/') br.select_form(nr=0) br['login'] = self.username br['pass'] = self.password br.submit() return br
| | | | |
Nie jest elegancko, tagi <div> nie parsują się po tej rzeźni ale działa. Przynajmniej u mnie.
Ostatnio edytowano 31 sty 2012 23:37:04 przez zaslav, łącznie edytowano 2 razy
|
31 sty 2012 22:43:36 |
|
|
Admin
Dołączył(a): 13 cze 2008 14:47:02 Posty: 2836 Lokalizacja: Gdańsk
eCzytnik: kindle
|
Re: Polskie treści w calibre - komentarze
chociaż dodaj siebie jako autora, bo Ci fenuks proces o podszywanie się pod niego wytoczy
_________________ Porównywarka cen ebooków
|
31 sty 2012 22:49:00 |
|
|
Użytkownik
Dołączył(a): 03 maja 2011 16:20:28 Posty: 8
eCzytnik: Kindle
|
Re: Polskie treści w calibre - komentarze
Dodałem ale ta receptura wymaga dopracowania. Jak ktoś ma ochotę to zapraszam
|
31 sty 2012 22:58:53 |
|
|
Użytkownik
Dołączył(a): 21 mar 2011 17:12:46 Posty: 517 Lokalizacja: Gdańsk
eCzytnik: K3, K4, KT, KPW, M92B, Galaxy Note
|
Re: Polskie treści w calibre - komentarze
_________________
|
05 lut 2012 0:48:23 |
|
|
Użytkownik
Dołączył(a): 16 lip 2011 14:21:10 Posty: 133
eCzytnik: Kindle 3
|
Re: Polskie treści w calibre - komentarze
Dzięki zaslav za poprawki, po dokonaniu ostatecznych szlifów kod receptury to: Spoiler! | | | | Kod: # -*- coding: utf-8 -*- from calibre.web.feeds.news import BasicNewsRecipe import re
class Nowa_Fantastyka(BasicNewsRecipe): title = u'Nowa Fantastyka' oldest_article = 7 __author__ = 'fenuks' __modified_by__ = 'zaslav' language = 'pl' encoding='latin2' description ='site for fantasy readers' category='fantasy' masthead_url='http://farm5.static.flickr.com/4133/4956658792_7ba7fbf562.jpg' #extra_css='.tytul {font-size: 20px;}' #not working max_articles_per_feed = 100 INDEX='http://www.fantastyka.pl/' no_stylesheets=True needs_subscription = 'optional' remove_tags_before=dict(attrs={'class':'naglowek2'}) #remove_tags_after=dict(name='span', attrs={'class':'naglowek-oceny'}) remove_tags_after=dict(name='form', attrs={'name':'form1'}) remove_tags=[dict(attrs={'class':['avatar2', 'belka-margin', 'naglowek2']}), dict(name='span', attrs={'class':'alert-oceny'}), dict(name='img', attrs={'src':['obrazki/sledz1.png', 'obrazki/print.gif', 'obrazki/mlnf.gif']}), dict(name='b', text='Dodaj komentarz'),dict(name='a', attrs={'href':'http://www.fantastyka.pl/10,1727.html'}), dict(name='form')] preprocess_regexps = [ (re.compile(r'\<table .*?\>'), lambda match: ''), (re.compile(r'\<td.*?\>'), lambda match: ''), (re.compile(r'\<center\>'), lambda match: '')]
def find_articles(self, url): articles = [] soup=self.index_to_soup(url) tag=soup.find(attrs={'class':'belka1-tlo-m'}) art=tag.findAll(name='a', attrs={'class':'a-box'}) for i in art: title=i.string url=self.INDEX+i['href'] #date=soup.find(id='footer').ul.li.string[41:-1] articles.append({'title' : title, 'url' : url, 'date' : '', 'description' : '' }) return articles
def parse_index(self): feeds = [] feeds.append((u"Opowiadania", self.find_articles('http://www.fantastyka.pl/3.html'))) feeds.append((u"Publicystyka", self.find_articles('http://www.fantastyka.pl/6.html'))) feeds.append((u"Hype Park", self.find_articles('http://www.fantastyka.pl/9.html')))
return feeds
def get_cover_url(self): soup = self.index_to_soup('http://www.e-kiosk.pl/nowa_fantastyka') self.cover_url='http://www.e-kiosk.pl' + soup.find(name='a', attrs={'class':'img'})['href'] return getattr(self, 'cover_url', self.cover_url)
def get_browser(self): br = BasicNewsRecipe.get_browser() if self.username is not None and self.password is not None: br.open('http://www.fantastyka.pl/') br.select_form(nr=0) br['login'] = self.username br['pass'] = self.password br.submit() return br
def preprocess_html(self, soup): for item in soup.findAll(style=True): del item['style'] for item in soup.findAll(font=True): del item['font'] for item in soup.findAll(align=True): del item['align'] for item in soup.findAll(name='tr'): item.name='div' title=soup.find(attrs={'class':'tytul'}) if title: title['style']='font-size: 20px; font-weight: bold;' self.log.warn(soup) return soup
| | | | |
Za jakiś czas zgłoszę poprawki do calibre, w tym czasie zainteresowani mogą użyć powyższego kodu. Ponadto napisałem kilka nowych recept i jeszcze więcej starych poprawiłem, z grubsza je przetestowałem, ale z racji na niemałą ich ilość mogło mi coś umknąć, więc zamieszczam je prewencyjnie pod tym odnośnikiem do dogłębniejszych testów dla wszystkich chętnych.
|
05 lut 2012 16:19:34 |
|
|
Użytkownik
Dołączył(a): 21 lut 2012 12:16:19 Posty: 11
eCzytnik: Kindle 3
|
Re: Polskie treści w calibre - komentarze
Witam, Od kilku miesięcy używam Kindla a zafascynowany jestem możliwosciami calibre. Obserwuje co dzieje się w sprawie polskich zródeł newsów, sam napisałem kilka(nascie) recept którymi się chętnie podzielę. Jestem nowy na tym forum i nie wiem jeszcze w jaki sposób publikować recepty. Poeksperymentuje w niniejszym wpisie za co przepraszam jeśli coś mi nie wyjdzie. Na początek coś dla kobiet - Zwierciadło: Spoiler! | | | | Kod: __license__ = 'GPL v3' __copyright__ = '2012, Krzysk(at)wp.pl' ''' zwierciadlo.pl ''' from calibre.web.feeds.news import BasicNewsRecipe class ZwierciadloRecipe(BasicNewsRecipe): title = u'Zwierciadło' description = u'Zwierciadlo.pl - przestrzeń wolna od presji, stresu, codziennego pędu i tego wszystkiego, co nie pozwala nam dostrzegać rzeczy ważnych, otwierać się na codzienność. <br>' __author__ = u'Krzysk(at)wp.pl' __version__ = '1.0'
oldest_article = 7 max_articles_per_feed = 100 category = u'Kobieta, Psychologia, Moda, Kuchnia, Kultura, Lifestyle, News' publisher = u'Wydawnictwo Zwierciadło Sp. z o.o.' masthead_url = 'http://www.jogawparku.pl/wp-content/galerie/loga2008/zwierciadlo-logo-72.jpg' publication_type = 'magazine' language = 'pl'
no_stylesheets = True remove_javascript = True remove_empty_feeds = True use_embedded_content = False
keep_only_tags =[] keep_only_tags.append(dict(name= 'h1')) keep_only_tags.append(dict(name= 'div', attrs={'class':['news-info','news-excerpt MuseoSlab700','news-content']}))
feeds = [(u'Psychologia', u'http://zwierciadlo.pl/kategoria/psychologia/feed'), (u'Seks', u'http://zwierciadlo.pl/kategoria/seks/feed'), (u'Trendy i moda', u'http://zwierciadlo.pl/kategoria/trendy-i-moda/feed'), (u'Uroda', u'http://zwierciadlo.pl/kategoria/uroda/feed'), (u'Lifestyle', u'http://zwierciadlo.pl/kategoria/lifestyle/feed'), (u'Zdrowie', u'http://zwierciadlo.pl/kategoria/zdrowie/feed'), (u'Kuchnia', u'http://zwierciadlo.pl/kategoria/kuchnia/feed'), (u'Kultura', u'http://zwierciadlo.pl/kategoria/kultura/feed')]
conversion_options = { 'tags' : category ,'language' : language ,'publisher' : publisher }
extra_css = ''' .news-info{font-size: x-small;} .news-excerpt {font-weight: bold;} '''
def append_page(self, soup, appendtag): apage = soup.find(name='p', attrs={'class':'pages'}) if apage is not None: for nexturl in apage.findAll(name= 'a'): if nexturl.string in ['2','3','4','5', '6', '7', '8', '9']: soup2 = self.index_to_soup(nexturl['href']) pagetext = soup2.findAll(name='div', attrs={'class':'news-content'}) for tag in pagetext: pos = len(appendtag.contents) appendtag.insert(pos, tag) while appendtag.find(name='p', attrs={'class':'pages'}) is not None: appendtag.find(name='p', attrs={'class':'pages'}).replaceWith('')
def preprocess_html(self, soup): self.append_page(soup, soup.body) return soup
def get_cover_url(self): soup = self.index_to_soup('http://zwierciadlo.pl/magazyn/zwierciadlo') cover_item = soup.find('div', attrs={'class' : 'small-item-front'}) if cover_item: cover_url = cover_item.img['src'] else: cover_url = masthead_url return cover_url
| | | | |
Dalej Poradnik domowy: Spoiler! | | | | Kod: __license__ = 'GPL v3' __copyright__ = '2012, Krzysk(at)wp.pl' ''' http://poradnikdomowy.pl ''' from calibre.web.feeds.news import BasicNewsRecipe class PoradnikDomowyRecipe(BasicNewsRecipe): title = u'Poradnik Domowy' description = u'Poradnikdomowy.pl - serwis internetowy magazynu dla kobiet <br>' __author__ = u'Krzysk(at)wp.pl' __version__ = '1.0'
oldest_article = 7 max_articles_per_feed = 100 category = u'Kobieta, Zdrowie, Uroda, Kulinaria, Reportaże, Psychologia, Seks, Turystyka' publisher = u'Agora S.A.' cover_url = 'http://bi.gazeta.pl/im/3/10398/m10398213.png' publication_type = 'magazine' language = 'pl'
no_stylesheets = True remove_javascript = True remove_empty_feeds = True
keep_only_tags =[] keep_only_tags.append(dict(name = 'h1', attrs ={'class' : 'artTitle'})) keep_only_tags.append(dict(name = 'div', attrs ={'id' : ['gazeta_article_author', 'gazeta_article_image','gazeta_article_lead','gazeta_article_body']})) keep_only_tags.append(dict(name = 'div', attrs ={'class' : 'navigation'}))
remove_tags = [] remove_tags.append(dict(name= 'div', attrs ={'id' : ['gazeta_article_likes', 'gazeta_article_share']})) remove_tags.append(dict(name= 'div', attrs ={'class' : ['bs_seemore0', 'bs_seemore mod_bi_katy4', 'rel_box']}))
extra_css = ''' .gazeta_article_author {font-weight: bold} ''' conversion_options = { 'tags' : category , 'language' : language , 'publisher' : publisher}
def parse_pages(self, soup, section, articles) : for h3 in soup.findAll(name = 'h3') : if h3.a is not None: article = {} article['url'] = h3.a['href'] article['title'] = self.tag_to_string(h3.a) article_page = self.index_to_soup(article['url']) if article_page.find('div', attrs={'id' : 'gazeta_article_lead'}) is not None : article['description'] = self.tag_to_string(article_page.find('div', attrs={'id' : 'gazeta_article_lead'})) else : article['description'] = '' if article_page.find('div', attrs={'id' : 'gazeta_article_author'}) is not None : article['author'] = self.tag_to_string(article_page.find('div', attrs={'id' : 'gazeta_article_author'})) else : article['author'] = '' if article_page.find('div', attrs={'id' : 'gazeta_article_date'}) is not None : article['date'] = self.tag_to_string(article_page.find('div', attrs={'id' : 'gazeta_article_date'})) else : article['date'] = '' if not articles.has_key(section) : articles[section] = [article] else: articles[section].append(article) return articles
def parse_index(self) : feeds = [] articles = {} articles = self.parse_pages(self.index_to_soup('http://poradnikdomowy.pl/poradnikdomowy/0,116269.html'), 'Zdrowie', articles) articles = self.parse_pages(self.index_to_soup('http://poradnikdomowy.pl/poradnikdomowy/0,116270.html'), 'Uroda', articles) articles = self.parse_pages(self.index_to_soup('http://poradnikdomowy.pl/poradnikdomowy/0,116271.html'), 'Kulinaria', articles) articles = self.parse_pages(self.index_to_soup('http://poradnikdomowy.pl/poradnikdomowy/0,116278.html'), 'Reportaże', articles) articles = self.parse_pages(self.index_to_soup('http://poradnikdomowy.pl/poradnikdomowy/0,116272.html'), 'Psychologia', articles) articles = self.parse_pages(self.index_to_soup('http://poradnikdomowy.pl/poradnikdomowy/0,116275.html'), 'Seks', articles) articles = self.parse_pages(self.index_to_soup('http://poradnikdomowy.pl/poradnikdomowy/0,116281.html'), 'Turystyka', articles) articles = self.parse_pages(self.index_to_soup('http://poradnikdomowy.pl/poradnikdomowy/0,116288.html'), 'Prawo i Finanse', articles) for section in articles : feeds.append((section, articles[section])) return feeds
def append_page(self, soup, appendtag) : apage = soup.find('div', attrs={'id':'Str'}) if apage is not None: for nexturl in apage.findAll('a') : if nexturl.string in ['2','3','4','5', '6', '7', '8', '9']: nexturl= 'http://poradnikdomowy.pl' + nexturl['href'] soup2 = self.index_to_soup(nexturl) pagetext = soup2.findAll('div', attrs={'id' : 'gazeta_article_body'}) for tag in pagetext : pos = len(appendtag.contents) appendtag.insert(pos, tag) while appendtag.find('div', attrs={'id':'Str'}) is not None: appendtag.find('div', attrs={'id':'Str'}).replaceWith('')
apage = soup.find('div', attrs={'class':'navigation'}) while apage is not None: nexturl = apage.find('a', attrs={'class' : 'next'}) if nexturl is not None : nexturl= nexturl['href'] soup2 = self.index_to_soup(nexturl) pagetext = soup2.findAll('div', attrs={'id' : 'gazeta_article_body'}) for tag in pagetext : pos = len(appendtag.contents) appendtag.insert(pos, tag) apage = soup2.find('div', attrs={'class':'navigation'}) else: break while appendtag.find('div', attrs={'class':'navigation'}) is not None: appendtag.find('div', attrs={'class':'navigation'}).replaceWith('')
def preprocess_html(self, soup) : self.append_page(soup, soup.body) return soup
def populate_article_metadata(self, article, soup, first): if first and hasattr(self, 'add_toc_thumbnail'): picdiv = soup.find('img') if picdiv is not None: self.add_toc_thumbnail(article,picdiv['src'])
def get_cover_url(self): soup = self.index_to_soup('http://poradnikdomowy.pl/poradnikdomowy/0,0.html') tr = soup.find('a', attrs= {'title':'Poprzednie wydania'}).parent.parent.parent.parent.parent.parent img = tr.find('img')['src'] cover_url = img.replace('C.', 'X.') return cover_url
| | | | |
Jak wyszło?
|
21 lut 2012 12:47:47 |
|
|
Użytkownik
Dołączył(a): 21 lut 2012 12:16:19 Posty: 11
eCzytnik: Kindle 3
|
Re: Polskie treści w calibre - komentarze
Nowe propozycje Lotnicza Polska - Lotniczy serwis informacyjny. Można samodzielnie określić jakie tematy chcemy obserwować: Spoiler! | | | | Kod: _license__ = 'GPL v3' __copyright__ = '2012, Krzysk(at)wp.pl' ''' lotniczapolska.pl ''' class Lotnicza_Polska(BasicNewsRecipe): title = u'Lotnicza Polska' description = u'Lotniczy serwis informacyjny. Nowości z zakresu lotnictwa awiacji oraz galeria zdjęć i filmów. <br>' __author__ = u'Krzysk(at)wp.pl' __version__='1.0'
oldest_article = 7 max_articles_per_feed = 30 category = u'Lotnictwo, News' publisher = u'lotniczapolska.pl' cover_url = 'http://lotniczapolska.pl/s/lp/i/logo_lp_poziom_new.gif' # masthead_url = cover_url publication_type = 'magazine' language = 'pl'
remove_javascript = True remove_empty_feeds = True reverse_article_order = True
keep_only_tags =[] keep_only_tags.append(dict(attrs = {'class' : ['artt', 'artd', 'artdakt', 'artpLf', 'artpLfa', 'artl', 'artx']}))
extra_css = ''' h1 {font-size: x-large; font-weight: bold} .artd {font-size: x-small} .artpLfa {font-size: x-small} ''' conversion_options = { 'tags' : category , 'language' : language , 'publisher' : publisher }
feeds = [ (u'Ostatnie', u'http://lotniczapolska.pl/rss_portal.php?feed=9&type=1'), (u'Z kraju', u'http://lotniczapolska.pl/rss_portal.php?feed=7&type=1'), (u'Ze świata', u'http://lotniczapolska.pl/rss_portal.php?feed=8&type=1'), (u'Przegląd mediów', u'http://lotniczapolska.pl/rss_portal.php?feed=2665&type=1'), # (u'Balony', u'http://lotniczapolska.pl/rss_portal.php?feed=106&type=1'), (u'Lotnictwo komunikacyjne', u'http://lotniczapolska.pl/rss_portal.php?feed=211&type=1'), (u'Lotnictwo ogólne', u'http://lotniczapolska.pl/rss_portal.php?feed=240&type=1'), (u'Lotnictwo wojskowe - polskie', u'http://lotniczapolska.pl/rss_portal.php?feed=227&type=1'), (u'Modelarstwo', u'http://lotniczapolska.pl/rss_portal.php?feed=266&type=1'), # (u'Paralotnie', u'http://lotniczapolska.pl/rss_portal.php?feed=803&type=1'), # (u'Motolotnie', u'http://lotniczapolska.pl/rss_portal.php?feed=791&type=1'), # (u'Samoloty ultralekkie', u'http://lotniczapolska.pl/rss_portal.php?feed=830&type=1'), # (u'Spadochrony', u'http://lotniczapolska.pl/rss_portal.php?feed=325&type=1'), (u'Szybowce', u'http://lotniczapolska.pl/rss_portal.php?feed=339&type=1'), # (u'Wiatrakowce', u'http://lotniczapolska.pl/rss_portal.php?feed=346&type=1'), # (u'Wspomnienia o...', u'http://lotniczapolska.pl/rss_portal.php?feed=2164&type=1'), # (u'Wywiady', u'http://lotniczapolska.pl/rss_portal.php?feed=2444&type=1'), # (u'Biblioteka lotnika', u'http://lotniczapolska.pl/rss_portal.php?feed=2688&type=1'), # (u'Internauci piszą', u'http://lotniczapolska.pl/rss_portal.php?feed=707&type=1'), # (u'Grupy akrobacyjne', u'http://lotniczapolska.pl/rss_portal.php?feed=3460&type=1'), # (u'Wieści z aeroklubów', u'http://lotniczapolska.pl/rss_portal.php?feed=2092&type=1'), # (u'Wieści ze szkół', u'http://lotniczapolska.pl/rss_portal.php?feed=2141&type=1'), # (u'Wieści ze stowarzyszeń', u'http://lotniczapolska.pl/rss_portal.php?feed=2144&type=1'), # (u'Konkurs fotograficzny', u'http://lotniczapolska.pl/rss_portal.php?feed=1373&type=1'), # (u'Konkurs filmowy', u'http://lotniczapolska.pl/rss_portal.php?feed=1376&type=1'), # (u'Konkurs specjalny', u'http://lotniczapolska.pl/rss_portal.php?feed=1379&type=1'), ]
def populate_article_metadata(self, article, soup, first): if first and hasattr(self, 'add_toc_thumbnail'): picdiv = soup.find('img') if picdiv is not None: self.add_toc_thumbnail(article,picdiv['src'])
| | | | |
u'LifeStyle Magazine': Spoiler! | | | | Kod: __license__ = 'GPL v3' __copyright__ = '2012, Krzysk(at)wp.pl' ''' http://lifestylemagazine.pl ''' class LsmRecipe(BasicNewsRecipe): title = u'LifeStyle Magazine' description = u'LifeStyle Magazine kierowany jest do osób aktywnych, dynamicznych, szukających nowych możliwości rozwoju osobistego. <br/>' __author__ = u'Krzysk(at)wp.pl' __version__ = '1.0'
oldest_article = 14 max_articles_per_feed = 100 category = u'lifestyle,moda,rozwój osobisty,podróże,finanse,kultura' publisher = u'2012, LifeStyle Magazine' cover_url = u'http://kalendarzsukcesu.pl/img/logo/_c07aac24c3edf2b8853acaeac964c6d1.jpg' masthead_url = cover_url publication_type = 'magazine' language = 'pl'
auto_cleanup = True no_stylesheets = True remove_javascript = True remove_empty_feeds = True reverse_article_order = True
#keep_only_tags = [ dict(name= 'div', attrs={'class':'art-content'}) ] auto_cleanup_keep = '//*[@class="art-PostHeader"]'
conversion_options = { 'tags' : category ,'language' : language ,'publisher' : publisher }
extra_css = ' h2 {font-size: x-large; font-weight: bold;} '
feeds = [ # (u'Home', u'http://lifestylemagazine.pl/index.php?format=feed&type=rss'), (u'Lifestyle', u'http://lifestylemagazine.pl/lifestyle?format=feed&type=rss'), (u'Wydarzenia', u'http://lifestylemagazine.pl/wydarzenia?format=feed&type=rss'), (u'Podr\xf3\u017ce', u'http://lifestylemagazine.pl/podroze?format=feed&type=rss'), (u'Moda', u'http://lifestylemagazine.pl/moda?format=feed&type=rss'), (u'Kultura', u'http://lifestylemagazine.pl/kultura?format=feed&type=rss'), (u'Finanse', u'http://lifestylemagazine.pl/finanse?format=feed&type=rss'), (u'LsmTV', u'http://lifestylemagazine.pl/lsmtv?format=feed&type=rss'), (u'Felietony', u'http://lifestylemagazine.pl/felietony?format=feed&type=rss'), (u'Zdrowie', u'http://lifestylemagazine.pl/zdrowie?format=feed&type=rss'), (u'Konkursy', u'http://lifestylemagazine.pl/konkursy?format=feed&type=rss'), (u'Patronat', u'http://lifestylemagazine.pl/patronat?format=feed&type=rss'), (u'Redakcja', u'http://lifestylemagazine.pl/redakcja?format=feed&type=rss') ]
def populate_article_metadata(self, article, soup, first): if first and hasattr(self, 'add_toc_thumbnail'): picdiv = soup.find('img') if picdiv is not None: self.add_toc_thumbnail(article,picdiv['src'])
| | | | |
Z receptą tą związany jest problem: nie we wszystkich artykułach wyświetla się tytuł. Jest to wynik działania auto_cleanup i należałoby przerobić receptę bez użycia tej funkcji (nie chciało mi się). Spróbowałem użyć auto_cleanup_keep = '//*[@class="art-PostHeader"]' ale to nie zadziałało. Dlaczego? I jeszcze coś dla miłośników gier planszowych GamesFanatic: Spoiler! | | | | Cytuj: __license__ = 'GPL v3' __copyright__ = '2012, Krzysk(at)wp.pl' ''' www.gamesfanatic.pl''' class GamesFanaticRecipe(BasicNewsRecipe): title = u'GamesFanatic' description = u'Gry planszowe i karciane, recenzje, zapowiedzi, felietony, wieści i nowości ze świata. <br>' __author__ = u'Krzysk(at)wp.pl' __version__ = '1.0' oldest_article = 15 max_articles_per_feed = 100 publisher = u'gamesfanatic.pl' category = u'Gry, Gry planszowe, Planszówki, News' publication_type = 'blog' cover_url = u'http://www.gamesfanatic.pl/wp-content/uploads/2011/12/gflogo.png' language = 'pl' auto_cleanup = True conversion_options = { 'tags' : category , 'language' : language , 'publisher' : publisher } feeds = [(u'Artykuły', u'http://www.gamesfanatic.pl/feed/')] def populate_article_metadata(self, article, soup, first): if first and hasattr(self, 'add_toc_thumbnail'): picdiv = soup.find('img') if picdiv is not None: self.add_toc_thumbnail(article,picdiv['src']) | | | | |
|
21 lut 2012 14:34:45 |
|
|
Kto przegląda forum |
Użytkownicy przeglądający to forum: Brak zalogowanych użytkowników i 1 gość |
|
Nie możesz rozpoczynać nowych wątków Nie możesz odpowiadać w wątkach Nie możesz edytować swoich postów Nie możesz usuwać swoich postów
|
|
|
|