Scrapy
3 minuty czytania
Scrapy to framework open source napisany w języku Python, służący do przetwarzania danych z witryn internetowych. Jest to narzędzie przeznaczone dla web scraping, czyli automatyzowanego pobierania danych z witryn internetowych.
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.
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.
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
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
Web development
Dowiedz się więcejMobile development
Dowiedz się więcejE-commerce
Dowiedz się więcejProjektowanie UX/UI
Dowiedz się więcejOutsourcing
Dowiedz się więcejPowiązane artykuły
Web scraping - co to jest i jak działa?
23 maj 2023
Web scraping to technika pozyskiwania danych z stron internetowych. Polega na przeszukiwaniu kodu HTML i wyodrębnieniu żądanych informacji. Najczęściej stosuje się ją w celach badawczych lub biznesowych. Istnieją specjalne narzędzia ułatwiające tę pracę, ale proces może być też wykonany ręcznie.

React Suspense: Przewodnik krok po kroku od wstępu do działania
24 lut 2025
React Suspense to potężne narzędzie, które umożliwia efektywne zarządzanie ładowaniem komponentów i danych w aplikacjach React. Dzięki niemu możemy poprawić wydajność oraz doświadczenie użytkownika, unikając migotania interfejsu i długich czasów oczekiwania.
Teoria Herzberga w środowisku IT: Co naprawdę motywuje programistów? Analiza kluczowych założeń i praktycznych wniosków
21 lut 2025
Jak motywować programistów? Teoria Herzberga, znana z ogólnej psychologii pracy, może dostarczyć cennych wskazówek także w sektorze IT. W niniejszym artykule zbadamy, jakie czynniki zgodnie z tą teorią budują satysfakcję zawodową twórców oprogramowania, jakże kluczowych w dobie cyfrowej transformacji.
HTML Header – co to jest i jak go poprawnie używać?
21 lut 2025
Nagłówek HTML jest fundamentalnym elementem struktury każdej strony internetowej. Bez niego, przeglądarki i wyszukiwarki internetowe mieliby problem z interpretowaniem informacji zawartych na stronie. W tym artykule przyjrzymy się bliżej temu elementowi, zdefiniujemy jego podstawowe właściwości oraz przedstawimy praktyczne wskazówki, które pomogą w poprawnym i efektywnym użytkowaniu nagłówków HTML.
Reklamy pop-up a UX: Jak nie zepsuć doświadczenia użytkownika?
21 lut 2025
Reklamy pop-up to najczęstsza metoda monetyzacji, ale czy zawsze skuteczna? Balansowanie między zyskiem a satysfakcją użytkownika to wyzwanie. Jak pogodzić efektywne UX z efektywną strategią reklamową?
SEO i struktura strony: Subdomena kontra podkatalog - co jest lepszym wyborem?
20 lut 2025
Optymalizacja strony pod kątem SEO to zadanie, które niemal zawsze stoi przed twórcami stron internetowych. Nieodpowiednio zaplanowana struktura strony może wpłynąć ujemnie na jej pozycje w wynikach wyszukiwarki. Znane są dwa główne modele struktury strony: subdomeny i podkatalogi. Choć obie mają swoje zalety i wady, nie zawsze jest jasne, który wybór jest lepszy. Spróbujmy rozwikłać tę zagadkę.
High Availability w IT: Kluczowe koncepcje i jej znaczenie w zapewnianiu ciągłości działania systemów
20 lut 2025
Zastanawialiście się kiedyś, jak to możliwe, że serwisy internetowe są dostępne niezależnie od pory dnia i nocy? Kluczem do tego zjawiska jest High Availability (wysoka dostępność) w IT. To podejście, które gwarantuje ciągłość działania systemów i minimalizuje ryzyko przerw w dostępie do usług cyfrowych. W tym artykule poruszamy kluczowe koncepcje związane z High Availability oraz wyjaśniamy, dlaczego ta strategia jest tak istotna w świecie technologii.
Zobacz wszystkie artykuły