fbpx

Web Scraping to nic innego jak metoda wyciągania danych ze stron internetowych. Do tego celu można wykorzystać skrypt napisany przez nas w Pythonie lub gotowy soft. Web scrapery głównie wykorzystywane są do wychwycenia okazji w sklepach internetowych, tańszych biletów lotniczych itp. Kiedy mamy już wprawę w pisaniu takiego web scrapera możemy, np. dodać opcję zakupu biletu, kiedy cena zostanie obniżona. Wiadomo, że czas reakcji takiego „bota” jest szybszy niż człowieka i nasz skrypt może generować wiele zapytań na minutę.

Wszystko zależy oczywiście od częstotliwości wykorzystywania takiego web scrapera. Jeżeli zdecydujesz się na odpytywanie danego serwera zbyt często to prawdopodobnie Twój adres IP zostanie dodany do czarnej listy. W takiej sytuacji mamy 4 opcje:

  1. Jeżeli to zaprzyjaźniona witryna, poprosić/poinformować, że chcielibyśmy korzystać z takiego skryptu i odpytywać serwer częściej niż statystyczny Kowalski.
  2. Jeżeli opcja 1. nie wchodzi w grę, bo to żaden wasz znajomy to sprawdzić czy usługa/witryna udostępnia API, którego możecie użyć do wykonywania zapytań. W przypadku użycia API bardzo często będziecie mogli uzyskać bardziej szczegółowe wyniki.
  3. Jeżeli 1. i 2. opcja nie wchodzi w grę można pobawić się w rozproszony web scraper. O tym napiszę w osobnym wątku.
  4. Zmniejszyć częstotliwość zapytań.

Chcemy zabrać się za web scraping – od czego zacząć?

  1. Zacznij od znalezienia URL. Określ tematykę, którą chcesz podjąć, mogą to być, np. dane z giełdy i statystyki dotyczące sesji na GPW. Ogranicza Ciebie tak na prawdę tylko i wyłącznie fantazja i źródła danych. Równie dobrze mogą to być przemówienia polityków, które zrzucisz później do CSV i dokonasz analizy sentymentalnej.
  2. Poznaj strukturę kodu HTML. Bez tego nie będziesz wiedzieć jaki fragment strony internetowej pobrać. Najlepszym sposobem jest kliknięcie, np. w Chrome na dany element i skorzystanie z opcji „Zbadaj element”. Wtedy zobaczysz znaczniki HTML i będziesz w stanie zidentyfikować interesujący Ciebie element.
  3. Przygotuj środowisko do pracy. Przede wszystkim jeżeli skrypt zostanie napisany w Pythonie to zainstaluj Pythona oraz dodatkowe pakiety tj. BeautifulSoup oraz Requests.
  4. Napisz kod. W dokumentacji BeautifulSoup znajdziesz wiele przykładów wykorzystania tego pakietu. Poniżej zobacz wersję kodu, którą już teraz możesz wypróbować.
  5. Przygotuj odpowiednie filtrowanie tekstu. BeautifulSoup daje spore możliwości w kontekście obróbki struktury danych. Sprawdź dokumentację pakietu i potestuj.
# W tym miejscu importujemy najważniejsze dla nas biblioteki
from bs4 import BeautifulSoup
import requests
# Adres URL, który nas interesuje. W tym przypadku akcje WIG20
link_www = 'https://stooq.pl/t/?i=532'
odpowiedz_z_serwera = requests.get(link_www, timeout=5)
# Tutaj używamy parsera HTML i przechowujemy zawartość w zmiennej zawartosc
zawartosc = BeautifulSoup(odpowiedz_z_serwera.content, "html.parser")
# Znajdujemy warstwę o id "fth1"
tresc = zawartosc.find_all(id='fth1')
for i in tresc:
        print(i.prettify())

Co dalej?

Zanim zaczniesz, sprawdź czy dana usługa udostępnia API, w wielu przypadkach może to być lepsze rozwiązanie. Pamiętaj również, żeby w przypadku web scrapingu działaj zgodnie z etyką i zdrowym rozsądkiem, aby nie zasypać serwera zapytaniami. Web scraping obciąża serwer, generując dużą ilość zapytań. Jeżeli nie będziesz na to zwracać uwagi to z dużym prawdopodobieństwem Twój adres IP zostanie dodany do czarnej listy.

W tym wpisie nieco ogólnie odniosłem się do web scrapingu, ale zachęcam do zgłębienia tematu. Na pewno pojawi się kilka wpisów z przykładami. Dzięki!

Dla początkujących i doświadczonych
Odbierz ebook - SQL dla analityków 

Znajdziesz w nim zestaw najważniejszych instrukcji oraz zapytania z przykładami.

Ebook podzielony na sekcje:

1. Zarządzanie tabelami
2. Zapytania w obrębie jednej tabeli
3. Zapytania dla wielu tabel
4. Modyfikacja danych
5. Funkcje agregujące

Invalid email address