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