Autor:08.07.2024
Web scraping to technika, która pozwala na szybkie i automatyczne pobieranie danych ze stron internetowych. W tym artykule pokażemy Ci, jak łatwo możesz zacząć przygodę z web scraping w popularnym języku Python.
Na początek będziesz potrzebować kilku bibliotek Pythona.
Biblioteki możesz zainstalować w następujący sposób:
pip install requests beautifulsoup4
Pierwszym krokiem będzie wysłanie żądania do interesującej nas strony internetowej. Chcemy pobrać zawartość tej strony. Użyjemy do tego biblioteki Requests.
import requests
url = 'https://example.com'
response = requests.get(url)
if response.status_code == 200:
page_content = response.text
print("Strona została pobrana pomyślnie.")
else:
print(f"Nie udało się pobrać strony. Kod statusu: {response.status_code}")
Kod jest dość prosty. Wskazujemy url strony, i jeśli odpowiedź z serwera jest prawidłowa, to zapisujemy zawartość do zmiennej page_content.
Teraz użyjemy biblioteki BeautifulSoup. Za jej pomocą możemy przeszukiwać strukturę HTML z pobranej strony. Popatrz na przykładowy kod, który wyciąga tytuł strony i wypisuje go do konsoli:
from bs4 import BeautifulSoup
soup = BeautifulSoup(page_content, 'html.parser')
title = soup.title.string
print("Tytuł strony:", title)
Jeśli chcesz wyciągnąć zawartość określonego elementu na stronie, to możesz użyć selektorów CSS lub metod takich jak find oraz find_all. Poniżej mamy przykład demonstrujący wyszukiwanie wszystkich linków na stronie:
links = soup.find_all('a')
for link in links:
print(link.get('href'))
Teraz zajmiemy się przykładem, który połączy w całość opisane powyżej techniki. Zakładamy, że istnieje jakiś blog i chcemy z niego pobrać tytuły wszystkich artykułów. Zakładamy też, że lista artykułów znajduje się na stronie głównej i każdy tytuł jest ma taką samą klasę w kodzie HTML.
Najpierw pobierzemy stronę główną:
import requests
from bs4 import BeautifulSoup
url = 'https://example-blog.com'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
A teraz wyszukamy wszystkie tytuły. Przypominamy, że są to elementy H2, z odpowiednią klasą (“post-title”):
articles = soup.find_all('h2', class_='post-title')
for article in articles:
title = article.text
print("Tytuł artykułu:", title)
Warto zauważyć, że w naszym prosty przykładzie używamy funkcji print, aby wyprowadzić do konsoli interesujące nas treści.
Warto zauważyć, że w naszym prosty przykładzie używamy funkcji print, aby wyprowadzić do konsoli interesujące nas treści.
Python świetnie się nadaje do web scraping bo oferuje proste w użyciu biblioteki. Jeśli zamierzasz z nich korzystać, nie zapominaj o ważnych aspektach prawnych i etycznych. Pobieranie zawartości zewnętrznej strony może się wiązać z pewnymi konsekwencjami, o czym pisaliśmy w tym artykule.