Naciśnij “Enter” aby skoczyć do treści

Scraping w praktyce z wykorzystaniem pluginu WebScraper.IO

Po zapoznaniu się z podstawami budowy stron internetowych w artykule Wstęp do automatycznego scrapingu danych – HTML i CSS przyszedł czas na konkrety – stworzenie własnej mapy strony i zaprojektowanie procesu, który pozwoli nam na scraping treści z WWW. Analiza OSINT to nie tylko “internetowe śledztwa”, ale przede wszystkim szukanie sposobów na docieranie do danych, ich gromadzenie, a następnie przetwarzanie. Dopiero informacja, która powstała z danych może dać nam wiedzę.

Instalacja pluginu do scrapingu – WebScraper.IO

Na potrzeby artykułu wykorzystamy wyłącznie darmowy, powszechnie dostępny i funkcjonalny plugin WebScraper.IO, który można pobrać na przeglądarkę Chrome bezpośrednio z tego linka. Zainstalowany scraper pojawi nam się na liście pluginów Chrome, ale aby go uruchomić musimy przełączyć widok narzędzi deweloperskich przeglądarki z domyślnego (po prawej stronie) na ten widoczny u dołu okna Chrome. W tym celu klikamy na klawiaturze F12 i wybieramy opcję DOCK TO BOTTOM.

Po zmianie ustawień Docka na końcu listy dostępnych narzędzi pojawi się opcja Web Scraper – to właśnie w tym miejscu rozpoczyna się zabawa ze scrapingiem danych.

Scraping, czyli tworzenie mapy strony

Pierwszy przykład scrapingu zrealizujemy z wykorzystaniem strony osintquest.pl. Praca z wtyczką WebScraper.IO zasadniczo polega na tworzeniu map strony, tj. budowaniu takiego schematu struktury, który pomoże programowi przejść przez poszczególne interesujące nas elementy i zapisać je w formie ustrukturalizowanej (np. tabeli .csv). Zatem w pierwszej kolejności wybieramy opcję CREATE NEW SITEMAP >> CREATE SITEMAP.

Dobrym zwyczajem nazewnictwa map strony i selektorów wskazujących na odpowiednie elementy map strony jest używanie wyłącznie małych liter, myślników zamiast spacji oraz zrezygnowanie z polskich znaków.

Po stworzeniu mapy strony mamy możliwość definiowania selektorów, które należy rozumieć jako odpowiednie, powtarzalne elementy strony przeznaczone do zapisania przez nasz scraper. Załóżmy, że chcemy pobrać wszystkie tytuły artykułów oraz linki do nich na głównej stronie osintquest.pl. Wybieramy zatem opcję ADD NEW SELECTOR, nazywamy go article, określamy typ jako link i klikamy na button SELECT. Wówczas plugin przełączy się w tryb inspekcji elementów strony (podobnie jak w trybie inspekcji opisanym w poprzednim artykule będącym wstępem do scrapingu). Zaznaczamy kilka pierwszych nagłówków aż scraper rozpozna schemat, że interesuje nas pobieranie znacznika o klasie post-title, a następnie klikamy DONE SELECTING.

Na koniec musimy koniecznie zaznaczyć opcję MULTIPLE, która informuje scraper, że takich znaczników na analizowanej stronie znajduje się więcej niż jeden. Pod buttonem DATA PREVIEW zobaczymy fragment danych, które będą pobrane przez scraper.

Ostatni element PARENT SELECTORS służy do zagnieżdżania jednych selektorów w drugich w celu tworzenia drzewa strony internetowej, ale o tym za chwilę. Aktualnie konstrukcja selektora przedstawia się zatem następująco:

Powyższy schemat pozwoli na pobranie linków do wszystkich artykułów ze strony głównej oraz zapisze je do pliku CSV. W tym celu musimy po zapisaniu selektora wybrać opcję SITEMAP NAZWA_NASZEJ_MAPY >> SCRAPE >> START SCRAPING. Mapa naszej strony wygląda jeszcze bardzo prosto:

Oznacza to, że plugin odpala główną zdefiniowaną na początku stronę i pobiera z niej każdy artykuł o klasie post-title, tj. link oraz nazwę nagłówka (w naszym przypadku tytuł artykułu).

Załóżmy, że chcemy aby program wszedł na każdy z artykułów i dodatkowo pobrał datę publikacji oraz pierwszy akapit tekstu. W tym przypadku musimy rozbudować naszą mapę strony o nowe dwa selektory, które będą zagnieżdżone w stworzonym już article. W tym celu musimy odpalić dowolny, nawet pierwszy artykuł na scrapowanej stronie i zdefiniować nowe selektory – datę oraz paragraf.

Selektor daty konfiguruje się następująco:

Koniecznie należy pamiętać o niezaznaczaniu opcji MULTIPLE, ponieważ w tym miejscu data publikacji występuje tylko raz, a także o zaznaczeniu ARTICLE jako PARENT SELECTOR, ponieważ po pobraniu linków do artykułów każdy z nich musi zostać załadowany w celu pobrania daty i pierwszego akapitu.

Analogicznie konfiguracja selektora pierwszego akapitu przedstawia się następująco:

Zatem nasz graf mapy strony rysuje się w ten sposób:

W pierwszej kolejności scraper ładuje stronę WWW, następnie pobiera wszystkie nazwy artykułów wraz z linkami, ładuje każdy po kolei i pobiera datę publikacji oraz pierwszy akapit. Efekt scrapingu poniżej:

Scraping stron z paginacją

Podstawowy scraping mamy za sobą, a co jeśli artykułów jest więcej (a zwykle jest więcej), albo strona wymaga dynamicznego ładowania lub klikania przycisku SHOW MORE? Na dynamiczne ładowanie i button typu POKAŻ WIĘCEJ sposób jest jeden – zdefiniowanie ich jako selektorów (np. typu inifinite scroll albo akcja CLICK). Jeśli mamy paginację to już na etapie definiowania strony internetowej, którą będziemy scrapować należy uwzględnić to w adresie URL. Zwykle paginacja jest widoczna w adresie URL strony.

Zwróćmy uwagę na stronę niebezpiecznik.pl, która po kliknięciu przycisku “POKAŻ STARSZE WPISY” zmienia swój URL na taki:

https://niebezpiecznik.pl/page/2/

Okazuje się, że po wpisaniu zamiast 2 np. 22 będziemy na 22 stronie z artykułami Niebezpiecznika. Zatem na etapie definiowania adresu URL strony do scrapowania musimy zastosować następujący zabieg:

https://niebezpiecznik.pl/page/[1-22]/

Pozwoli on na wykonywanie naszemu scraperowi operacji na pierwszych podstronach Niebezpiecznika, które są z artykułami.

Podsumowanie zagadnień związanych ze scrapingiem danych

WebScraper.IO to nie jest jedyne rozwiązanie, które może pomóc w scrapingu danych. Osoby techniczne stwierdzić mogą, że to półśrodek, ponieważ faktyczny webscraping to tylko pisanie kodu do pajączków typu SCRAPY. Nie każdy jednak posiada w sobie tyle cierpliwości i zacięcia, aby uczyć się od podstaw Pythona. Najważniejsze aby w swojej działalności osiągać sukces – jeśli przyniesie go nam WebScraper.IO, to dlaczego nie?:)

Istotne w zabawie ze scrapingiem danych jest testowanie, ćwiczenie i sprawdzanie wyników. Strony internetowe są tak różne, jak różna jest inwencja ich twórców. Zawierają w sobie zróżnicowane technologie i każda mapa strony może wyglądać zupełnie inaczej. Ważne jest też to, że WebScraper.IO posiada wielu zwolenników i wiele problemów, które napotykają analitycy już dawno zostało rozwiązanych na forach dyskusyjnych. Powodzenia w Waszych przygodach scrapingowych!

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *