Jak można wykorzystać takie dane pokażę na przykładzie czytnika RSS pokazującego najnowsze oferty pracy.
Co potrzebujemy
Standard RSS jest niezależny od języka programowania. Ja w przykładzie wykorzystam:
- Język programowania: Python
- Biblioteką do obsługi RSS feedbarser
- webapp2 framework
Tworzymy model
Jeżeli chcemy wykorzystać RSS we własnej aplikacji webowej to powinniśmy zapisać pobrane dane w bazie danych. Strony które udostępniają dane poprzez RSS nie powinny być przez nas bombardowane requestami co parę sekund.
class DataSource(db.Model):
name = db.StringProperty()
link = db.LinkProperty()
update_date = db.DateTimeProperty()
class JobOffer(db.Model):
source = db.ReferenceProperty()
title = db.StringProperty()
post_date = db.DateTimeProperty()
content = db.TextProperty()
link = db.LinkProperty()
Mamy tu 2 klasy:
- Datasource - Służy do przechowywania źródeł danych (linków do kanałów RSS)
- JobOffer - Służy do przechowywania pobranej oferty pracy
Pobieramy dane
def update_feeds(self):
dataSources = DataSource.all()
for dataSource in dataSources:
_load_feed(dataSource)
def _load_feed(dataSource):
last_modified = dataSource.update_date
if last_modified == None:
last_modified = datetime(2000, 1, 1, 0, 0)
data = feedparser.parse(dataSource.link, modified=last_modified)
if hasattr(data, 'modified_parsed'):
modified = data.modified_parsed
dt = datetime.fromtimestamp(mktime(modified))
elif hasattr(data, 'etag'):
modified = data.etag_parsed
dt = datetime.fromtimestamp(mktime(modified))
else:
dt = datetime.now()
dataSource.update_date = dt
dataSource.save()
for entry in data.entries:
dt = datetime.fromtimestamp(mktime(entry.date_parsed))
summary = html.strip_tags(entry.summary)
if dt > last_modified:
offer = JobOffer(source=dataSource,
title=entry.title,
post_date=dt,
content=summary,
link=entry.link)
offer.save()
Jeżeli korzystamy z biblioteki feedparser to cała komunikacja odbywa się poprzez tą bibliotekę. My otrzymujemy gotowy model z danymi, który zapisujemy do bazy.
Przykład
A jak to wszystko wygląda w praktyce można podejrzeć na stronie:
www.foklid.com
Brak komentarzy:
Prześlij komentarz