aitech-eks-pub-22/cw/02_wyszukiwarki_roboty.ipynb
Jakub Pokrywka 67e6944843 a
2022-03-15 13:53:49 +01:00

13 KiB

Logo 1

Ekstrakcja informacji

2. Wyszukiwarki roboty [ćwiczenia]

Jakub Pokrywka (2021)

Logo 2

Wyszukiwarki roboty

Zadanie

Opracować w języku Haskell wyspecjalizowanego robota pobierającego dane z konkretnego serwisu.

Punkty: 80 (domyślnie - niektóre zadanie są trudniejsze, wówczas ich ilość podana jest przy zadaniu)

Ogólne zasady:

  • pobieramy informacje (metadane) o plikach PDF, DjVU, JPG itp, ale nie same pliki,
  • nie pobierajmy całego serwisu, tylko tyle, ile trzeba, by pobrać metadane o interesujących nas zasobach,
  • interesują nas tylko teksty polskie, jeśli nie jest to trudne, należy odfiltrować publikacje obcojęzyczne,
  • staramy się ustalać datę z możliwie dużą dokładnością.

Instrukcja

0. Haskell Stack

Pobrać Haskell Stack

curl -sSL https://get.haskellstack.org/ | sh -s - -d ~/bin
Problemy z fizycznymi komputerami wydziałowymi

Na fizycznych komputerach wydziałowych są błędnie ustawione prawa dostępu na dyskach sieciowych, Haskell Stack musi działać na fizycznym dysku:

rm -rf /mnt/poligon/.stack
mkdir /mnt/poligon/.stack
mv ~/.stack ~/.stack-bak # gdyby już był... proszę się nie przejmować błędem
ln -s /mnt/poligon/.stack ~/.stack

1. Repozytorium z przykładowym rozwiązeniem

Zrobienie forka repozytorium https://git.wmi.amu.edu.pl/filipg/twilight-library.git

forkowanie repo

Sklonowanie sforkowanego repozytorium na komputer

sklonowanie repo

2. Sprawdzenie czy przykładowy robot działa

W katalogu projektu należy odpalić:

stack install # może trwać długo za pierwszym razem
stack exec almanachmuszyny

Jeżeli instalacja nie powiedzie się, być może należy zainstalować paczki libpcre3 libpcre3-dev , np. na ubuntu:

sudo apt install libpcre3 libpcre3-dev

Metoda opracowania robota z przykładu:

Znalezienie wyszystkich stron z rocznikami:

W przeglądarce należy znaleźć wszystkie linki do stron z rocznikami. Najłatwiej zrobić to przez podejrzenie źródła strony. Na przykład można kliknąć prawym przyciskiem myszy na link i wybrac "Inspect Element" (działa na chrome).

inspect

Łatwo zauważyć, że wszystkie linki mają klasę "roczniki". Dlatego należy odwołać sie w robocie do tej klasy poprzez xpath w pliku app/almanachmuszyny.hs :

extractRecords = extractLinksWithText "//a[@class='roczniki']"  -- pary adres-tytuł 

Następna linijka kodu służy oczyszczeniu stringa z tytułem rocznika:

>>> second (arr $ replace "\r\n            " " ")

Następnie, łatwo zauważyć, że robiąc prostą manipulację linkiem z :

http://www.almanachmuszyny.pl/index.php?p=spisy/95s

na

http://www.almanachmuszyny.pl/index.php?p=spisy/95tr

dostajemy stronę spis-treści ze wszystkimi pdf-ami. Dlatego robimy podmianę linku:

>>> first (arr ((++"tr") . init))  -- modyfikujemy pierwszy element pary, czyli adres URL

Nastęnie ze wszystkich podanych stron ze spisem treści wybieramy wszystkie pdfy korzystając z polecenia:

>>> first (extractLinksWithText "//li/a[contains(@href,'.pdf')]")

3. Opracowanie swojego robota

Opracuj swojego robota wzorując się na pliku almanachmuszyny.hs. (Ale dodaj swój plik, nie zmieniaj almanachmuszyny.hs!) Twój robot powinien działać na serwisie wybranym z listy na którą należy się zapisać (na dole tej strony).

Dopisz specyfikację swojego robota do shadow-library.cabal.

Pracuj nad swoim robotem, uruchamiaj go w następujący sposób:

stack build
stack exec mojrobot

mojrobot to przykładowa nazwa- dla swojego projektu użyj innej, znaczącej nazwy

Jeśli publikacja (np. pojedynczy numer gazety) składa się z wielu plików, powinien zostać wygenerowany jeden rekord, w finalUrl powinny znaleźć się URL do poszczególnych stron (np. plików JPR) oddzielone //.

Dla twojego robota przydatne mogą być funkcje zdefiniowane w ShadowLibrary/Core.hs

Problemy z https

W przypadku problemów z https:

Trzeba użyć modułu opartego na bibliotece curl. Paczka Ubuntu została zainstalowana na komputerach wydziałowych. Na swoim komputerze możemy zainstalować paczkę libcurl4-openssl-dev, a następnie można sobie ściągnąć wersję twilight-library opartą na libcurl:

git fetch git://gonito.net/twilight-library withcurl
git merge FETCH_HEAD

4. Zgłoszenie zadań

Po opracowaniu robota oddaj zadanie korzystając z panelu MS TEAMS assigments umieszczając jako rozwiązanie link do twojego repozytorium.

Lista serwisów do wyboru

Na serwis należy zapisywać się korzystając z linka do google doc podanego na ćwiczeniach

Lista serwisów do wyboru (na każdy serwis 1 osoba):

  1. Teksty Drugie
  2. Archiwum Inspektora Pracy
  3. Medycyna Weterynaryjna — również historyczne zasoby od 1945 roku, 120 punktów
  4. Polskie Towarzystwo Botaniczne — wszystkie dostępne zdigitalizowane publikacje!, 130 punktow
  5. Czasopisma polonijne we Francji — najlepiej w postaci PDF-ów, jak przykład, 220 punktów
  6. Muzeum Sztuki — czasopisma, 220 punktów, publikacje, teksty, czasopisma, wycinki
  7. Czas, czasopismo polonijne, 140 punktów S.G.
  8. Stenogramy Okrągłego Stołu, 110 punktów
  9. Wiadomości matematyczne, 120 punktow
  10. Alkoholizm i Narkomania
  11. Czasopismo Etyka, O.K.
  12. Hermes i https://chomikuj.pl/hermes50-2, 250 punktów
  13. E-dziennik Województwa Mazowieckiego 150 punktów
  14. Gazeta GUM
  15. Echo Chełmka
  16. Głos Świdnika 100 punktów
  17. Teatr Lalek
  18. Kultura Paryska, całe archiwum z książkami i innymi czasopismami, 200 punktów
  19. Gazeta Fabryczna - Kraśnik 120 punktów
  20. Artykuły o Jujutsu
  21. Wycinki o Taekwon-Do
  22. Materiały o kolejnictwie 180 punktów
  23. Centralny Instytut Ochrony Pracy, znaleźć wszystkie publikacje typu http://archiwum.ciop.pl/44938, wymaga trochę sprytu 130 punktów
  24. Biblioteka Sejmowa - Zasoby Cyfrowe, 200 punktów
  25. Litewska Akademia Nauk, tylko materiały w jęz. polskim, takie jak np. https://elibrary.mab.lt/handle/1/840, 170 punktów
  26. Litewska Biblioteka Cyfrowa, wyłuskać tylko materiały w jęz. polskim, 190 punktów
  27. Czasopisma PTTK, 120 punktów
  28. Kilka przedwojennych książek
  29. Historia polskiej informatyki - wyjątkowo bez datowania
  30. Zeszyty Formacyjne Katolickiego Stowarzyszenia „Civitas Christania”, tylko niektóre pliki można zdatować
  31. Prasa podziemna — Częstochowa, również ulotki i inne materiały skanowane - 180 punktów
  32. Gorzowskie Wiadomości Samorządowe
  33. Gazeta Rodnia - Bieruń
  34. Parafia Śrem
  35. BIP Gdynia do roku 1990!, 120 punktów
  36. BIP Żyrardów do roku 1990!, 120 punktów
  37. Biuletyn Polarny
  38. Otwarte czasopisma Wydawnictwa UAM, 140 punktów
  39. Wycinki o kolei gondolowej — zob. "Napisali o Szyndzielni" na tej stronie
  40. Instytut Radioelektroniki PW
  41. Zagadnienia Ekonomiki Rolnej, 100 punktów
  42. Rozkazy Komendanta Chorągwi Wielkopolskiej ZHP, 130 punktów
  43. Cyfrowe Archiwa Tarnowskie, 100 punktów
  44. Instytut Techniki Górniczej - wycinki
  45. Czasopismo matematyczne Delta, 100 punktów
  46. Czasopismo Pauza
  47. Nowa Dekada