Teraz jest 22 gru 2024 9:33:57




Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 2 ] 
Wyciągnąć blogi... 
Autor Wiadomość
Użytkownik

Dołączył(a): 12 cze 2012 12:44:39
Posty: 2
eCzytnik: Kindle 4
Post Wyciągnąć blogi...
Witam!
Polskie treści mocno napuchły więc pozwolę sobie zalożyć nowy wątek. :D

Ogólnie chodzi o to by wyciągać archiwalne zapisy róznych blogów.
Na początek bloog.pl
A dokładnie tymontymanski.bloog.pl

Oto co udało mi się stworzyć.

Spoiler! import re

class blogi_pl(BasicNewsRecipe):
title = 'blog_tymontymanski'
author = u'Tymon Tymański'
__author__ = 'HerC'
description = ''
language = 'pl'
#cover_url = ''
auto_cleanup = False

remove_empty_feeds = True
remove_tags = []
remove_tags.append(dict(name = 'div', attrs = {'class' : 'trop-url'}))
remove_tags.append(dict(name = 'div', attrs = {'id' : 'loginOI'}))
remove_tags.append(dict(name = 'p', attrs = {'class' : 'komentarz'}))
remove_tags.append(dict(name = 'span', attrs = {'class' : 'SBM_link'}))
remove_tags.append(dict(name = 'a', attrs = {'class' : 'pomocnik komentarz'}))
keep_only_tags =[]
keep_only_tags.append(dict(name = 'div', attrs = {'class' : 'wpis'}))
remove_attributes = ['style','font','color','size']
preprocess_regexps = [(re.compile(r'<a.*?>', re.IGNORECASE), lambda m: ''),(re.compile(r'</a>', re.IGNORECASE), lambda m: '')]

def parse_index(self):
feeds = []
for ii in reversed(range(1,100)):
articles = []
url = u'http://tymontymanski.bloog.pl/kat,0,page,%s,index.html' % ii
soup = self.index_to_soup(url)
desc = None
gg = soup.findAll('h2')
wy = soup.findAll('div',attrs = {'class' : 'wpis'})
section_title = '%s' % ii
for bb in reversed(wy):
oo = bb.find('a')
title = self.tag_to_string(oo)
sub_url = 'http://tymontymanski.bloog.pl' + self.tag_to_string(oo['href'])

articles.append({'title':title, 'url':sub_url, 'description':desc,'date':''})


feeds.append((section_title, articles))

return feeds
remove_empty_feeds = True


Coś tam wyciąga ale jest jeszcze parę rzeczy, które można by dodać.
- jakaś zmienna global? by można było zrobić uniwersalną recepturkę dla różnych blogerów (np. tymontymanski, skiba, arturandrus itd.)
- jeden kolor czcionki najlepiej czarny
- wielkość czcionki "domyślna" (żadnych pomniejszonych i powiększonych)
- dodać komentarze; komentarze bywają na kilku stronach i w odwrotnej kolejności...
- jpg autora bloga jako okładka
- itp.

pomożecie? :mrgreen:


24 cze 2012 21:28:40
Zobacz profil
Użytkownik

Dołączył(a): 12 cze 2012 12:44:39
Posty: 2
eCzytnik: Kindle 4
Post Re: Wyciągnąć blogi...
He, widzę, że dyskusja się rozwinęła... :?
To może wyciągniemy blog o bazylku pana Jacka Pałki?

Spoiler! import re

class blog_pl(BasicNewsRecipe):
title = 'blog Bazylek'
author = u'Jacek Pałka'
__author__ = 'HerC'
description = 'Forum '
language = 'pl'
auto_cleanup = False
no_stylesheets = True


keep_only_tags =[]
keep_only_tags.append(dict(name = 'div', attrs = {'class' : 'widget widget_archive'}))
keep_only_tags.append(dict(name = 'div', attrs = {'class' : 'post-headline'}))
keep_only_tags.append(dict(name = 'div', attrs = {'class' : 'post-bodycopy clearfix'}))
keep_only_tags.append(dict(name = 'ul', attrs = {'class' : 'commentlist'}))

remove_tags = []
remove_tags.append(dict(name = 'div', attrs = {'class' : 'comment-meta commentmetadata'}))


def parse_index(self):
feeds = []
url = u'http://badmofuker.blog.pl/'
soup = self.index_to_soup(url)
mies = soup.find('div',attrs = {'class' : 'widget widget_archive'})
mies = mies.findAll('a')
for ii in reversed(mies):
articles = []
section_title = self.tag_to_string(ii)
url = self.tag_to_string(ii['href'])
soup = self.index_to_soup(url)
desc = None
gg = soup.findAll('div',attrs = {'class' : 'post-headline'})

for bb in gg:
oo = bb.find('a')
title = self.tag_to_string(oo)
sub_url = self.tag_to_string(oo['href'])
articles.append({'title':title, 'url':sub_url, 'description':desc,'date':''})
feeds.append((section_title, articles))

return feeds

def preprocess_html(self, soup):
for item in soup.findAll('div',attrs = {'class' : 'widget widget_archive'}):
item.extract()
for item in soup.findAll('a'):
if item.string is not None:
str = item.string
item.replaceWith(str)
for items in soup.findAll('ul',attrs = {'class' : 'commentlist'}):
for item in items.findAll('img'):
item.extract()
return soup


18 paź 2012 14:08:22
Zobacz profil
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 2 ] 


Kto przegląda forum

Użytkownicy przeglądający to forum: Brak zalogowanych użytkowników i 4 gości


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

Skocz do:  
cron