aitech-eks-pub/cw/02_wyszukiwarki_roboty.ipynb
Jakub Pokrywka 3c0223d434 reformat
2021-10-05 15:04:58 +02:00

15 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. Wieści Pepowa — nie pominąć strony nr 2 z wynikami, 110 punktów
  6. Czasopismo Kosmos
  7. Czasopismo Wszechświat
  8. Czasopisma polonijne we Francji — najlepiej w postaci PDF-ów, jak np. https://argonnaute.parisnanterre.fr/medias/customer_3/periodique/immi_pol_lotmz1_pdf/BDIC_GFP_2929_1945_039.pdf, 220 punktów
  9. Muzeum Sztuki — czasopisma, 220 punktów, publikacje, teksty, czasopisma, wycinki
  10. Wiadomości Urzędu Patentowego
  11. Czas, czasopismo polonijne, 140 punktów S.G.
  12. Stenogramy Okrągłego Stołu, 110 punktów
  13. Nasze Popowice
  14. Czasopisma entomologiczne
  15. Wiadomości matematyczne, 120 punktow
  16. Alkoholizm i Narkomania
  17. Czasopismo Etyka, O.K.
  18. Skup makulatury, 250 punktów
  19. Hermes i https://chomikuj.pl/hermes50-2, 250 punktów
  20. E-dziennik Województwa Mazowieckiego 150 punktów
  21. Czasopismo Węgiel Brunatny
  22. Gazeta GUM
  23. Nowiny Andrychowskie
  24. Kawęczyniak
  25. Zbór Chrześcijański w Bielawia
  26. Gazeta Rytwiańska
  27. Nasze Popowice
  28. Echo Chełmka
  29. Głos Świdnika 100 punktów
  30. Aneks 90 punktów
  31. Teatr Lalel
  32. Biuletyn Bezpieczna Chemia
  33. Głos Maszynisty
  34. Kultura Paryska, całe archiwum z książkami i innymi czasopismami, 180 punktów
  35. Gazeta Fabryczna - Kraśnik 120 punktów
  36. Artykuły o Jujutsu
  37. Wycinki o Taekwon-Do
  38. Materiały o kolejnictwie 180 punktów
  39. Centralny Instytut Ochrony Pracy, znaleźć wszystkie publikacje typu http://archiwum.ciop.pl/44938, wymaga trochę sprytu 130 punktów
  40. Biblioteka Sejmowa - Zasoby Cyfrowe, 200 punktów
  41. Elektronika Praktyczna, te numery, które dostępne w otwarty sposób, np. rok 1993
  42. Litewska Akademia Nauk, tylko materiały w jęz. polskim, takie jak np. https://elibrary.mab.lt/handle/1/840, 170 punktów
  43. Litewska Biblioteka Cyfrowa, wyłuskać tylko materiały w jęz. polskim, 190 punktów
  44. Czasopisma Geologiczne, 120 punktów
  45. Czasopisma PTTK, 120 punktów
  46. Czasopisma Polskiego Towarzystwa Dendrologicznego, 100 punktów
  47. Kilka przedwojennych książek
  48. Historia polskiej informatyki - wyjątkowo bez datowania
  49. Zeszyty Formacyjne Katolickiego Stowarzyszenia „Civitas Christania”, tylko niektóre pliki można zdatować
  50. Józef Piłsudski Institute of America - 220 punktów
  51. Prasa podziemna — Częstochowa, również ulotki i inne materiały skanowane - 180 punktów
  52. Tajemnica Atari, plik ZIP z DjVu
  53. Gorzowskie Wiadomości Samorządowe
  54. Gazeta Rodnia - Bieruń
  55. Parafia Śrem
  56. BIP Gdynia do roku 1990!, 120 punktów
  57. BIP Żyrardów do roku 1990!, 120 punktów
  58. Biuletyn Polarny
  59. Otwarte czasopisma Wydawnictwa UAM, 140 punktów
  60. Wycinki o kolei gondolowej — zob. "Napisali o Szyndzielni" na tej stronie
  61. Instytut Radioelektroniki PW
  62. Zagadnienia Ekonomiki Rolnej, 100 punktów
  63. Rozkazy Komendanta Chorągwi Wielkopolskiej ZHP, 130 punktów
  64. Sulimczyk - pismo harcerskie
  65. Archiwum Harcerskie, 170 punktów
  66. Cyfrowe Archiwa Tarnowskie, 100 punktów
  67. Instytut Techniki Górniczej - wycinki