Często programując korzystamy z dostępnych API, które dostarczają nam potrzebne dane do naszej aplikacji. Przykładowo budując aplikację, która będzie nam ukazywać aktualną pogodę, musimy skądś te dane wziąć i najczęściej korzystamy z dostępnych API na rynku, ale co w przypadku kiedy nie znajdziemy interesującego nas API. Właśnie w takim przypadku warto rozważyć, scrapowanie stron. W tym artykule przedstawię właśnie narzędzie, które pomoże nam w scrapowaniu stron.

scrapy

Czym jest scrapowanie stron?

Scrapowanie stron jest to nic innego niż wyciąganie jakiejś zawartości strony i zapisywanie tych danych w celu np. wykorzystania ich w swojej aplikacji. Scrapowanie stron wykorzystują takie serwisy jak np. ceneo, google, czy też portale zbierające oferty pracy z innych portali. Pamiętajmy, że to co robimy później z takimi danymi może być czasami nielegalne.

 

Czy szukasz wykonawcy Scrapy ?
logo

Co to jest Scrapy?

Scrapy jest frameworkiem do języka Python i jest on najpopularniejszym i najbardziej rozbudowanym narzędziem do scrapowania stron internetowych. Scrapy dostarcza wszystkie niezbędne narzędzia potrzebne do efektywnego wydobywania danych ze stron, przetwarzania ich i przechowywania w preferowanej strukturze i formacie. Scrapy jest łatwy do użycia, posiada obsługę żądań asynchronicznych, a ponadto automatycznie dostosowuje prędkość indeksowania za pomocą mechanizmu “Auto-throttling”.

 

Scrapy Spider

Najważniejszą częścią w Scrapy są klasy Spider. Scrapy używa ich do zbierania informacji ze strony internetowej. Definiują one w jaki sposób nasz Spider ma wydobywać dane ze strony.

 

Przykładowa klasa Spidera, która wydobywa cytaty ze strony.

 

import scrapy
class QuotesSpider(scrapy.Spider):
    name = 'quotes'
    start_urls = [
        'https://quotes.toscrape.com/tag/humor/',
    ]
    def parse(self, response):
        for quote in response.css('div.quote'):
            yield {
                'author': quote.xpath('span/small/text()').get(),
                'text': quote.css('span.text::text').get(),
            }
        next_page = response.css('li.next a::attr("href")').get()
        if next_page is not None:
            yield response.follow(next_page, self.parse)

 

Taki kod zapisujemy do pliku “quotes_spider.py” i odpalamy naszego bota do scrapowania komendą:

 

scrapy runspider quotes_spider.py -o quotes.jl

 

Kiedy nasz bot skończy swoją pracę powinniśmy otrzymać plik “quotes.jl”, który będzie zawierać listę cytatów zapisanych w formacie json.

 

{"author": "Jane Austen", "text": "\u201cThe person, be it gentleman or lady, who has not pleasure in a good novel, must be intolerably stupid.\u201d"}
{"author": "Steve Martin", "text": "\u201cA day without sunshine is like, you know, night.\u201d"}
{"author": "Garrison Keillor", "text": "\u201cAnyone who thinks sitting in church can make you a Christian must also think that sitting in a garage can make you a car.\u201d"}
...

 

Parse – jak przetwarzać dane?

Scrapy oferuje elastyczne metody przetwarzania danych pobranych z witryn internetowych. Kluczowym elementem tego procesu jest metoda parse, która analizuje odpowiedź zwróconą przez serwer i pozwala na wydobycie interesujących informacji. Scrapy automatycznie obsługuje żądania HTTP i przekazuje odpowiedź do tej metody, gdzie można ją przetwarzać według własnych potrzeb. Metoda parse pozwala na nawigowanie po strukturze strony oraz wybieranie konkretnych elementów za pomocą narzędzi takich jak XPath czy CSS Selectors. Możliwe jest także generowanie kolejnych żądań do innych podstron oraz przechowywanie danych w formatach takich jak JSON czy CSV. Dzięki temu Scrapy jest potężnym narzędziem do scrapowania i automatycznej ekstrakcji informacji z dużych zbiorów danych.

 

Zarządzanie sesjami i cookies

Podczas scrapowania stron internetowych często konieczne jest zarządzanie sesjami i plikami cookies, które pozwalają na utrzymanie stanu użytkownika. Wiele stron wymaga autoryzacji lub śledzi aktywność użytkownika za pomocą plików cookie, dlatego prawidłowa ich obsługa w Scrapy jest kluczowa.

 

Scrapy automatycznie przechowuje i przesyła pliki cookie dla każdej domeny, co ułatwia scrapowanie stron, które wymagają zalogowania lub utrzymania sesji. Możliwe jest także ręczne zarządzanie plikami cookie poprzez modyfikowanie nagłówków żądań, co daje większą kontrolę nad interakcją ze stroną. W bardziej zaawansowanych przypadkach można korzystać z pośredników (middleware), aby dostosować zachowanie frameworka do specyficznych wymagań serwera docelowego.

SPRAWDŹ SWOJĄ WIEDZE Z TEMATU scrapy

Pytanie

 1/5

Jakiej klasy należy użyć jako podstawy podczas definiowania nowej pająkowej klasy w Scrapy?

Jakiej metody należy użyć do zdefiniowania, jakie żądania HTTP powinny zostać wysłane przez pająka Scrapy?

Jaką klasę powinno się użyć, aby zdefiniować niestandardowy element środkowy (middleware) w Scrapy?

Jaka metoda Scrapy służy do wyodrębniania danych z odpowiedzi HTTP i przekazania ich do potoku?

Jak nazywa się wbudowany selektor CSS w Scrapy, który ułatwia wyodrębnianie danych z dokumentów HTML?

Scrapy i XPath – wydobywanie danych ze stron

XPath to jedno z najpotężniejszych narzędzi do nawigacji po strukturze stron HTML i XML. W Scrapy można go wykorzystać do precyzyjnego wydobywania danych, takich jak teksty, linki, obrazy czy atrybuty elementów. XPath pozwala na poruszanie się po drzewie DOM strony internetowej i selektywne wybieranie tylko tych fragmentów kodu, które są istotne dla analizy.

 

Dzięki XPath możliwe jest filtrowanie elementów na podstawie ich atrybutów, pozycji w strukturze dokumentu lub zawartości tekstowej. To szczególnie przydatne przy pracy ze stronami o skomplikowanej budowie, gdzie tradycyjne selektory CSS mogą nie być wystarczająco precyzyjne. W połączeniu z Scrapy, XPath pozwala na efektywne pobieranie danych z dynamicznych i statycznych stron internetowych, co czyni go niezwykle przydatnym narzędziem w procesie web scrapingu.

Nasza oferta

Powiązane artykuły

Zobacz wszystkie artykuły