Kamil Herba Juliusz Sompolski 2 marca 2009 ASDL: wyciąganie literatury budowa serwisu.

Slides:



Advertisements
Podobne prezentacje
INSTRUKCJA KORZYSTANIA Z KATALOGU ON-LINE
Advertisements

Jak szukać potrzebną pozycję w „Programie Mol”
20041 Projektowanie dynamicznych witryn internetowych Paweł Górczyński ASP 3.0.
Kurs języka C++ Paweł Rzechonek Instytut Informatyki
Zaawansowane techniki algorytmiczne
Rafał Hryniów Tomasz Pieciukiewicz
Wprowadzenie.
SQL INJECTION Wykorzystanie błędów w językach skryptowych
Prezentacja Organizacja informacji o zasobach w katalogu komputerowym
Publiczna Biblioteka Pedagogiczna w Poznaniu Filia w Swarzędzu
Informatyka Stosowana
Jan Aleksander Wierzbicki
W ZBIORACH BIBLIOTEKI G Ł ÓWNEJ W ZBIORACH BIBLIOTEKI G Ł ÓWNEJ TEMATYCZNE WYSZUKIWANIE LITERATURY W KATALOGU ONLINE.
ISOiWUT Internetowy System Oferowania i Wyszukiwania Usług Transportowych.
Budowa i funkcje elektronicznego katalogu biblioteki szkolnej
OPERATORY WYSZUKIWAWCZE
PHP vs. ASP PHP – lider wydajności wśród języków skryptowych.
Dokumentowanie wymagań w języku XML
Metody autoryzacji użytkowników wymaga integracji z systemem operacyjnym nie wymaga logowania mała pewność mechanizmu wymaga logowania duża pewność mechanizmu.
Katalog komputerowy WebPac
GeoTrackerPast Web tracking in 4 dimensions. Informacje Temat: System wyszukiwania haseł w Internecie(?) Promotor: dr Mikołaj Morzy Skład: – Tomasz Szymanowski.
Piotr Kasprzyk Instytut Informatyki Politechniki Śląskiej
Bibliografia Geologiczna Polski Baza danych
1. Wprowadzenie 2. Wybrane funkcjonalności serwisu 3. Strategie na przyszłość 4. Oferta inwestycyjna.
Made by Mateusz Szirch Kilka słów o JavaScript.
OPIS BIBLIOGRAFICZNY mgr Halina Gierut mgr inż. Małgorzata Sorys.
PRACA BIBLIOTEKARZA W ZESPOLE SZKÓŁ SZPITALNYCH
Podstawy programowania. Język C i C++– podstawy Temat: 1
Tworzenie Aplikacji Internetowych dr Wojciech M. Gańcza 7.
Technologie tworzenia aplikacji internetowych Wykład 3
WebQuest wykonane w ramach projektu BelferOnLine
BIBLIOTEKA WYŻSZEJ SZKOŁY ADMINISTRACJI I BIZNESU INSTRUKCJA KORZYSTANIA Z KATALOGU ON-LINE.
ANNA BANIEWSKA SYLWIA FILUŚ
Technologie internetowe II
JAK SZUKAĆ W KATALOGU KOMPUTEROWYM?
Programowanie obiektowe III rok EiT
Tworzenie Aplikacji Internetowych dr Wojciech M. Gańcza 8.
Systemy zarządzania treścią Wykład 5
Ms Access Formularze i raporty Marzena Nowakowska KIS, WZiMK, PŚk
Projektowanie stron WWW
Zasoby Internetowe Oxford University Press Niniejsza prezentacja podaje krótki opis Oxford Index. Mówi: czym jest Oxford Index jak może Ci pomóc jak.
IBUK Libra WIRTUALNA CZYTELNIA
Wprowadzenie do spisów treści j a następnie naciśnij klawisz F5 lub kliknij pozycję Pokaz slajdów > Od początku, aby rozpocząć kurs. Na pasku komunikatów.
ODDZIAŁ UDOSTĘPNIANIA ZBIORÓW CZĘŚCIĄ ZINTEGROWANEGO SYSTEMU KOHA - NOWE MOŻLIWOŚCI ROZWIĄZANIA ZASTOSOWANE W BIBLIOTEKACH: - POLITECHNIKI KRAKOWSKIEJ.
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski 1 informatyka +
ZASADY KORZYSTANIA Z KATALOGU BIBLIOTECZNEGO
Temat 1: Ogólne cechy języka PHP
Opracowanie mgr Karol Adamczyk
Literatura podstawowa
Temat Prezentacji : ZNACZNIKI META TAGS wyk.H. Kozłowski.
Edytory tekstowe stron WWW
Skorzystaj z zasobów Polskiej Bibliografii Lekarskiej! Jeżeli chcesz korzystać z PBN w domu zapytaj się o hasło w Bibliotece PMWSZ Skorzystaj z zasobów.
EBSCOhost Collection Manager Konto osoby proponującej książki do zakupu Przewodnik support.ebsco.com.
Przetwarzanie obrazów
Języki i technologie wytwarzania stron WWW Autor: Michał Walkowski Referat.
 Podstawowy składnik.NET Framework  Technologia tworzenia w pełni dynamicznych stron internetowych działających po stronie serwera  Zorientowanie na.
K URS JĘZYKA C++ – ORGANIZACJA ZAJĘĆ ( ) Paweł Rzechonek Instytut Informatyki Uniwersytetu Wrocławskiego.
Algorytmy i Struktury Danych Algorithms and Data Structures dr inż. Lech Jamroż Wydział Fizyki, Matematyki I Informatyki.
C++ mgr inż. Tomasz Turba Politechnika Opolska 2016.
Seminarium dyplomowe5 Jan Brzozowski, Katedra Studiów Europejskich.
Krzysztof Ciebiera na podstawie
Kurs języka C++ – organizacja zajęć ( )
Poradnik: Polska Bibliografia Lekarska - Jak szukać literatury na wybrany temat w Bibliotece i Centrum Informacji Naukowej PMWSZ w Opolu.
Wstęp do Informatyki - Wykład 14
Dobre praktyki w Django REST Framework
Systemy Informacji Prawnej
Aplikacje i usługi internetowe
SZKOLENIE BIBLIOTECZNE
Aplikacje i usługi internetowe
IBUK Libra WIRTUALNA CZYTELNIA
Zapis prezentacji:

Kamil Herba Juliusz Sompolski 2 marca 2009 ASDL: wyciąganie literatury budowa serwisu

Co trzeba zrobić? Wybrać język i narzędzia programowania. Wymyślić jak rozpoznawać które elementy stron na Ważniaku są literaturą, prawidłowo wyciągać co jest tytułem, co autorem etc. Zapewnić jakieś zaplecze do przechowywania i prezentowania tych informacji, zbudować serwis WWW

Jaki język programowania?

Python! ● „Batteries included”

Python Do Pythona istnieje dużo bibliotek do szybkiej i sprawnej realizacji potrzebnych nam funkcjonalności: Wysyłanie żądań do stron WWW i otrzymywanie odpowiedzi – urllib, httplib Obrabianie tych stron np. wyrażeniami regularnymi aby wyciągnąć z nich interesujące nas dane – re, sgmllib Prezentacja tych danych użytkownikowi w postaci własnego serwisu WWW – framework django

Requestowanie stron WWW urllib – biblioteka obsługująca wiele popularnych protokołów bardzo prosty odczyt danych ze stron obsługa skryptów cgi obsługa https httplib – druga biblioteka nieco bardziej niskopoziomowa urllib do obsługi http korzysta z niej

Przykłady urllib – funkcja odczytująca kod strony o podanym adresie def getWebPage(urlString): handle = urllib.urlopen(urlString) return handle.read() httplib – podobna funkcja: def getWebPage2(urlString): url = urlparse(urlString) conn = httplib.HTTPConnection(url.hostname) conn.request("GET", urlString) r = conn.getresponse() return r.read()

Ciekawy formularz z Buw Wyszukiwanie przez słowa w opisach Wpisz termin wyszukiwawczy: Wybierz kategorię: Tytuł Autor Hasło przedmiotowe pol. Hasło przedmiotowe ang. ISBN ISSN Wszystko

urllib – formularze POST Funkcja szukająca danej książki w BUW: def findTitleInBuwList(title): params = urllib.urlencode({'t1': title, 'u1': '4', 'submittheform': 'Search', "beginsrch" : "1", "function" : "INITREQ"}) f = urllib.urlopen(" bin/gw_46_6/chameleon", params) return f.read() praktyczne użycie - FindBookInBuw.py

Przedmioty na Ważniaku Zebrane w postaci linków na głównej stronie, w sekcjach zatytułowanych „Pierwszy stopień” oraz „Drugi stopień”. Nietrudno powinno być z tego wyciągnąć listę przedmiotów na Ważniaku, a literaturę przyporządkowywać do przedmiotów na stronach których została znaleziona. Aby obejść strony wykładu trzeba tylko chodzić po odpowiednich linkach.

Literatura na Ważniaku W większości zebrana w sekcji „Literatura” na głównej stronie danego wykładu, czasem też głębiej na stronach poszczególnych wykładów. Zebrana w postaci listy wypunktowanej lub wynumerowanej – co może ułatwić wyciąganie poszczególnych elementów literatury Często jednak dodatkowe „śmieci”, takie jak podział sekcji literatura na podsekcje, komentarze do literatury.

Najprostszy przypadek

Podział na podsekcje

Dodatkowy tekst

W kodzie... [ Edytuj ] Literatura D. Kincaid, W. Cheney, Analiza numeryczna, Wydawnictwa Naukowo- Techniczne, Warszawa ISBN X A. Björck, G. Dahlquist, Metody numeryczne, Państwowe Wydawnictwo Naukowe, Warszawa ISBN [ Edytuj ] Moduły

W kodzie... [ Edytuj ] Literatura W celu dogłębnego zapoznania się z omawianym na wykładzie materiałem, przeczytaj rozdział 2.3 w D. Kincaid, W. Cheney Analiza numeryczna, Wydawnictwa Naukowo-Techniczne, Warszawa 2006, ISBN X. Warto także przejrzeć rozdział 2 w P. Deulfhard, A. Hohmann, Numerical Analysis in Modern Scientific Computing, Springer, 2003, omawiający zagadnienia uwarunkowania i numerycznej poprawności algorytmów. Nieocenioną monografią na ten temat jest N. Higham, Accuracy and Stability of Numerical Algorithms, SIAM, 2002.

W kodzie... [ Edytuj ] Literatura Wykłady : Date C. J., An Introduction to Database System, vol. II, Adison-Wesley Pub. Comp., również WNT – W-wa, (seria: Klasyka Informatyki), 2000 (...) Laboratoria : M. Szeliga: ABC języka SQL. HELION. (...) [ Edytuj ] Moduły

Od strony technicznej biblioteka sgmlib – parser html odczytywanie linków do przedmiotów znajdowanie listy literatury Rozpoznawanie listy literatury na podstawie tagów html. Zwracanie wpisów literatury w całości, bez podziału na autora, tytuł etc.

Inne możliwości Inne biblioteki – htmllib, HTMLParser – o podobnej funkcjonalności, trochę innym interfejsie

sgmlib - przykład from sgmllib import SGMLParser class LiteratureLister(SGMLParser): def reset(self): SGMLParser.reset(self) self.list = [] self.literatureSection = False self.literatureElement = False def start_a(self, attrs): for t in attrs: if t == ('name', 'Literatura'): self.literatureSection = True def start_div(self, attrs): self.literatureSection = False def start_li(self, attrs): if(self.literatureSection): self.literatureElement = True self.elementBuffer = '' def end_li(self): if(self.literatureElement): if(self.elementBuffer.endswith("\n")): self.elementBuffer = self.elementBuffer.replace("\n","") self.list.append(self.elementBuffer) self.literatureElement = False def handle_data(self, text): if(self.literatureElement): self.elementBuffer += text

Literatura na Ważniaku Poszczególne wpisy różniące się diametralnie formatem Czasem „autor, tytuł”, czasem „tytuł, autor”, Autorzy czasem z pełnym imieniem, czasem z inicjałem, Poszczególne elementy wpisu zazwyczaj oddzielone przecinkami, ale bywa np. „autor: tytuł”, Rzadko takie dane jak ISBN

Przykłady wpisów B. Kernighan, D. Ritchie, Język ANSI C, Wydawnictwa Naukowo-Techniczne, Warszawa Adams Andrew A., McCrindle Rachel, Pandora's Box: Social and Professional Issues of the Information Age, John Wiley & Sons Ltd, Chichester, Marwedel P., Embedded System Design, Kluwer Academic Publishers, Boston 2003, ISBN M. Szeliga: ABC języka SQL. HELION. Materiały firmowe - dokumenty techniczne dostępne w sieci WWW - MIPS, Intel, AMD Wprowadzenie do algorytmów, Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein, Wydawnictwa Naukowo - Techniczne, 2004.

Od strony technicznej re – moduł do obsługi wyrażeń regularnych analiza danych z listy literatury – co jest książką, co autorem, co rokiem i numerem wydania, etc. analiza danych ze stron księgarni internetowych (wyszukiwanie wyrażeń typu nakład wyczerpany, cena, pozycja dostępna, etc.)

Wyrażenia regularne... Jeszcze tego nie zrobiliśmy :-) Powinno się jednak dać.

Budowa serwisu Framework django Pośredniczy w komunikacji z bazą danych przez obiektowy interfejs, nie wymagający pisania z palca SQLi Obsługuje wygląd stron poprzez prosty język template'ów Oddziela go od logiki poprzez pisanie widoków.

Django - początek django-admin.py startproject asdl ls __init__.py manage.py settings.py urls.py django-admin.py startapp getliterature ls __init__.py models.py views.py settings.py – ustawienia projektu models.py – modele bazy danych views.py – widoki urls.py – powiązania widoków z adresami

Templates reklamodawca.html: Wylistuj literaturę Wylistuj literaturę {{ form.as_p }} {% if error %} Nie udało się otworzyć strony {{ url }}. {% else %}{% if results %} {% if books %} Elementy literatury znalezione na stronie {{ url }}: {% for book in books %} {{ book }} {% endfor %} {% else %} Na stronie {{ url }} nie znaleziono żadnych elementów literatury. {% endif %}{% endif %}{% endif %}

Views views.py: from django import forms from getwebpage import getWebPage from literaturelister import LiteratureLister from django.shortcuts import render_to_response class LiteratureForm(forms.Form): url = forms.URLField(label='Podaj URL:', widget=forms.TextInput(attrs={'size':'100'})) def getLiterature(request): context = {} if request.method == 'POST': form = LiteratureForm(request.POST) if form.is_valid(): context["url"] = form.cleaned_data['url'] try: data = getWebPage(form.cleaned_data['url']) lister = LiteratureLister() lister.feed(data) context["results"] = True context["books"] = lister.list except IOError: context["error"] = True else: form = LiteratureForm() context["form"] = form return render_to_response('literature.html', context)

Modele models.py: from django.db import models class Book(models.Model): title = models.CharField(maxlength=1024) author = models.CharField(maxlength=1024) # etc... def __str__(self): return str(self.author)+', '+str(self.title) settings.py: DATABASE_ENGINE = 'sqlite3' DATABASE_NAME = 'db' Shell: syncdb (...) Creating table getliterature_book

Modele Python: >>> from asdl.getliterature.models import * >>> b = Book(title='Wprowadzenie do algorytmow', author='T. Cormen') >>> b.save() >>> c = Book(title='Thinking in Java', author='Bruce Eckel') >>> c.save() >>> d = Book(title='Wprowadzenie do blabla', author='Foobar') >>> d.save() >>> Book.objects.all() [,, ] >>> Book.objects.filter(title__startswith="Wprowadzenie") [, ]

Podłączenie tego urls.py: urlpatterns = patterns('', (r'^$', 'asdl.getliterature.views.getLiterature'), ) No i odpalić... runserver

Ta-dam!