Proszę o przekazywanie wsparcia w ramach 1 proc. podatku dla Krzysia Bulczaka, największego bohatera, jakiego znam. KRS 0000037904 z dopiskiem 20374 Bulczak Krzysztof

Prosty sposób na ściąganie tabel ze strony internetowej do CSV

Jeśli szukamy danych w Internecie, to idealnym rozwiązaniem jest skorzystanie z repozytoriów, gdzie możemy je swobodnie pobrać w dowolnym, standardowym formacie, a przy okazji otrzymać wiarygodną informację o statusie prawnoautorskim wybranego zbioru. Jeśli źródło udostępniające dane publikuje również API (interfejs programistczny), możemy poprosić o wybrany zbiór łącząc się bezpośrednio ze specjalnym adresem URL – pozwala to zazwyczaj nawet na filtrowanie danych jeszcze przed ich pobraniem z serwera. Niestety, w poszukiwaniu danych wciąż często trafiamy na publikowane na stronach WWW zwykłe tablice napisane w języku HTML, których nie da się jednym kliknięciem zaimportować do arkusza kalkulacyjnego. Wiele instytucji ciągle w ten sposób udostępnia gromadzone przez siebie dane. Jak sobie z tym poradzić?

Jeśli nie chcemy programować scrapera, który automatycznie pobierze wskazane strony WWW, wyciągnie z nich kod tabeli i wyeksportuje z niego dane do pliku .csv, możemy taką tabelę pobrać bez pisania jakiegokolwiek kodu. Zobaczmy jak to działa na przykładzie jednej z baz Narodowego Instytutu Muzealnictwa i Ochrony Zbiorów (NIMOZ), gromadzącej dane dotyczące polskich muzeów.

Interfejs tej bazy danych pozwala na filtrowanie zbioru pod kątem lokalizacji muzeum (województwo lub miasto), przefiltrowane wyniki można wyeksportować do pliku PDF. Nie jest to niestety postać tabeli, która interesowałaby nas, gdybyśmy chcieli zrobić jakąś prostą wizualizację lub zebrać w jednym miejscu np. tylko adresy mailowe wszystkich opisanych tam instytucji. PDF nie jest dobrym źródłem do dalszego przetwarzania danych.

Co można z tym zrobić? Aby uzyskać dane z tej tabeli w formacie csv (plik tekstowy ze strukturą tabeli oznaczanej np. przez przecinki, łatwy do importu do arkusza kalkulacyjnego), potrzebujemy przeglądarki Chrome. Załóżmy, że interesują nas muzea z województwa mazowieckiego – filtrujemy tabelę i uzyskujemy wynik w postaci 12 stron:

Warto zwrócić uwagę, że kiedy przełączamy się po stronach wyników wyszukiwania/filtrowania, adres strony się nie zmienia (to wciąż http://www.nimoz.pl/baza-wiedzy/bazy-danych/baza-muzeow-w-polsce). Adresy URL zawierający unikalne ścieżki do poszczególnych podstron wyników znajdujemy tuż pod tabelą.

Mając listę adresów podstron, wyświetlamy w przeglądarce każdą z nich po kolei. Kiedy strona (fragment naszej tabeli) jest już załadowana w oknie przeglądarki Chrome, klikamy prawym przyciskiem myszy na wybrany (dowolny) fragment tabeli z interesującymi nas danymi. Pojawia się menu, wybieramy opcję Zbadaj. Po prawej stronie wyświetla się zestaw narzędzi deweloperskich (wykorzystywanych zazwyczaj przy budowaniu stron WWW), a w nim okno z kodem źródłowym strony. Jeśli kliknęliśmy w dobrym miejscu, podświetlony zostanie wybrany element między tagami <table></table>. W kodzie wyszukujemy otwarcie tagu tabeli (klikamy tag <table> i podświetlamy go). Klikając prawym przyciskiem myszy wybieramy menu Copy -> Copy outerHTML.

W schowku mamy teraz cały kod HTML tabeli (razem z interesującymi nas danymi). Aby usunąć tagi HTML i przeformatować dane do postaci pliku csv, korzystamy z aplikacji HTML Table to CSV/Excel Converter. Wklejamy kod źródłowy do pola, wybieramy sposób oddzielania kolumn i klikamy wybraną opcję (eksport do csv lub pliku Excela).

Jak widać, to bardzo prosta metoda. Ma jednak dość poważne wady:

  • nie jest odporna na źle zaprojektowane tabele, tak jak ta na stronie NIMOZu, gdzie wewnątrz jednej komórki tabeli znajduje się nawet kilka paragrafów w różnymi danymi, np. w komórkach z kolumny Dodatkowe informacje znajdują się dane o statusie, organizatorze i dyrektorze muzeum. Plik csv stworzony na bazie takiej tabeli będzie posiadał w jednej kolumnie kilka różnych danych, które trzeba będzie albo ręcznie wydzielić, albo usunąć;
  • aby pobrać wszystkie dane ze wspomnianej bazy taką konwersję musimy zrobić 12 razy (za każdym razem wyświetlając stronę w przeglądarce, kopiując kod i formatując go do pliku csv).

Z pewnością nie jest to idealne rozwiązanie, w pewnych sytuacjach jednak na pewno lepsze niż ręczne przeklejanie wartości komórek. Na problemy z eksportowaniem danych publikowanych na stronach WWW warto zwrócić uwagę także podczas pracy nad stroną własnej instytucji.

Udostępnij na Twitterze | Udostępnij na Facebooku

Przeczytaj także