Scrapy
2 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"}
...
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
Wzorzec projektowy Bridge: Definicja, zasady działania i praktyczne zastosowanie
26 mar 2024
Bridge to jeden z kluczowych wzorców projektowych, który usprawnia proces tworzenia programów. W naszym artykule przyjrzymy się, jakie są podstawowe zasady działania tego patternu, jego definicji i jak jest stosowany w praktyce, aby lepiej zrozumieć jego istotę i przewagi.
Testcontainers: Co to jest i jakie są jego główne zalety w testowaniu oprogramowania?
25 mar 2024
Testcontainers rewolucjonizują testowanie oprogramowania, zapewniając narzędzia do elastycznego i efektywnego tworzenia testów. Jest to biblioteka, która umożliwia uruchamianie różnych testów za pomocą kontenerów Docker. Testcontainers służy m.in. do tworzenia izolowanych środowisk testowych, oferując wiele kluczowych korzyści. W tym artykule przyjrzymy się definicji, kluczowych korzyściach i praktycznym zastosowaniom Testcontainers.
Adaptive Web Design: Zalety i korzyści zastosowania
22 mar 2024
Adaptive Web Design, związany nierozerwalnie z epoką urządzeń mobilnych, stał się filarem sukcesu nowoczesnej strony internetowej. Jego podstawą jest tworzenie stron zorientowanych na użytkownika, które dostosowują się do różnorodnych urządzeń. W świecie, gdzie odwiedzający korzystają z rozmaitych platform, rola Adaptive Web Design rośnie lawinowo, przyspieszając, i jest kluczem do osiągnięcia wyróżniającej się i skutecznej obecności online
Czym jest targetowanie behawioralne w marketingu?
22 mar 2024
Targetowanie behawioralne to silne narzędzie w arsenale strategii marketingowych, które pozwala firmom na zrozumienie i skuteczne zaspokojenie potrzeb swoich klientów. Wspiera decyzje zakupowe, analizując zachowania użytkownika, i dostarcza spersonalizowane treści, czyniąc klienta bardziej zaangażowanym.
Parse w praktyce: Efektywne wykorzystanie tej technologii w procesie budowy aplikacji webowych
22 mar 2024
Czy kiedykolwiek zastanawiałeś się, jak skutecznie wykorzystać technologię Parse w procesie budowy aplikacji webowych? W niniejszym artykule postaramy się przedstawić praktyczne zastosowania Parse - backend-as-a-service (BaaS), który oferuje elastyczne i skalowalne rozwiązania dla deweloperów.
React Native Skia: Klucz do zrozumienia jego charakterystyki i funkcji
21 mar 2024
React Native Skia to wszechstronna otwartoźródłowa biblioteka, która umożliwia tworzenie bogatych, animowanych interfejsów użytkownika. Skia stanowi fundament, pomagając developerom w projektowaniu aplikacji o dużej wydajności. Idźmy dalej, aby zrozumieć kluczowe charakterystyki i funkcje tej innowacyjnej biblioteki.
Fluent Design - Wprowadzenie do systemu, zasad i możliwości
21 mar 2024
Fluent Design, nazywany 'językiem designu dla cyfrowych interfejsów' od Microsoft, przewodzi nowe trendy w świecie UI. Jego niewidzialne, ale odczuwalne zasady, takie jak światło, głębia czy materiał, znacząco różnią się od tradycyjnych. Przełóżmy zasłonę tajemniczości i dowiedzmy się, jak Fluent Design może zmienić to, jak postrzegamy interfejsy użytkownika.
Zobacz wszystkie artykuły