Instaluję Scrapy na moim systemie operacyjnym (Ubuntu):

sudo apt-get install python-dev python-pip libxml2-dev libxslt1-dev zlib1g-dev libffi-dev libssl-dev

sudo pip install scrapy

Uruchomiam w terminalu Scrapy:

scrapy

Aby rozpocząć nowy projekt wybieram ścieżkę, a następnie:

scrapy startproject nazwa_projektu

Wchodzę do stworzonego projektu, a następnie:

scrapy genspider nazwa_spidera nazwa_domeny(bez: http://www)

Następnie uruchamiam shell, oraz podaję adres strony. Tutaj będę sprawdzał, czy moje response są poprawne :

scrapy shell

fetch(„http://www.gatak.pl”)

Założenie jest takie, aby pozyskać wszystkie tytuły wraz z kategorią i datą publikacji. Dla przejrzystości ustawię kolejność: kategoria/data/tytuł

Dane, które chcę pozyskać wypisane są pod każdym artykułem na stronie głównej.

Odpalam Inspect strony. W kolejnym kroku należy mieć podstawowe pojęcie na temat HTML. Łatwo można zauważyć, że potrzebne dane zawarte są w <article></article>

Sprawdzam w shell, co wyświetli mi się, gdy utworzę response dla <article>

Można używać response.css lub response.xpath. Ja użyję xpath. Podstawowa zasada jest taka, że piszemy response.xpath(’//czego_szukamy’). Np. response.xpath(’//h2′).

W niektórych przypadkach(np. wyszukując klasę) używamy składni response.xpath(’//*[@class=”nazwa_klasy”]’)

Jak widać, otrzymałem 10 selektorów. Odpowiada to liczbie artykułów. Łączna liczba artykułów na blogu jest większa, natomiast na stronie pierwszej jest ich 10.

Każdy selektor(artykuł) będzie oddzielnym kontenerem z którego pozyskam potrzebne dane.

Aby dostać się do pojedynczego artykułu używam articles[0]:

Teraz pozyskam dane dla pojedynczego kontenera(artykułu):

Następnie określam response dla daty publikacji, oraz kategorii:

Kolejnym krokiem jest przejście na kolejne strony bloga. Na stronie służy do tego przycisk <<starsze wpisy. Robię inspekt i postępuję tak jak z poprzednimi przykładami.

Kolejnym krokiem jest stworzenie pająka. Należy wejść do pliku spiders i otworzyć plik py z nazwą naszego projektu i uzupełnić kod o dane, które zostały wcześniej uzyskane:

Aby uruchomić pająka wchodzę w terminalu do folderu z projektem i wpisuję polecenie: scrapy crawl gatak_scrapy -o items.csv

W folderze projektu został utworzony plik items.csv :