CodeGym /Kursy /Python SELF PL /Parsowanie HTML przy użyciu BeautifulSoup

Parsowanie HTML przy użyciu BeautifulSoup

Python SELF PL
Poziom 31 , Lekcja 2
Dostępny

1. Pobieranie i parsowanie dokumentów HTML

Krótki przegląd funkcjonalności

Biblioteka requests to nasz "posłaniec", który wyrusza w podróż po kod HTML stron internetowych. Wysyła zapytania HTTP i dostarcza strony, trochę jak dostawca pizzy, tylko bez "Margherity" i pudełek.

BeautifulSoup, z kolei, to nasz "kucharz", który bez trudu rozłoży pobrany HTML na składniki (tagi, atrybuty i tekst), abyśmy mogli je wykorzystać. Ułatwi nam odnalezienie odpowiednich elementów i zapisanie wszystkich istotnych informacji.

Używanie biblioteki requests

Teraz jesteśmy gotowi wykonać nasze pierwsze zapytanie HTTP i pobrać kod HTML strony. Dla ćwiczeń pobierzmy stronę example.com. Ta witryna to prawdziwy dinozaur internetu i idealnie nadaje się na początek.

Python

import requests

url = 'http://example.com'
response = requests.get(url)

# Sprawdźmy, czy wszystko w porządku
if response.status_code == 200:
    print("Strona została pomyślnie załadowana!")
else:
    print("Coś poszło nie tak. Kod błędu:", response.status_code)

Ten program wysyła zapytanie na URL i wyświetla sukces lub błąd w zależności od odpowiedzi. Jeśli wszystko pójdzie dobrze, będziemy mieli w rękach kod HTML strony w formie tekstu.

Śledzenie kodów błędów

Jeśli będziesz automatyzować parsowanie, to często spotkasz się z sytuacją, że strona, która powinna się załadować, nie ładuje się. Analiza kodów błędów to więc obowiązkowa część projektu, który parsuje więcej niż kilka stron.

Chodzi o to, że właściciele stron niezbyt lubią, gdy ktoś parsuje ich dane. Po pierwsze, to obciążenie dla strony (gdy parsowane są tysiące stron jednocześnie). Po drugie, to ich dane, na których zarabiają. Istnieje wiele sposobów przeciwdziałania parsowaniu: CAPTCHA, CloudFlare itd.

Dla biznesu idealna sytuacja to taka, w której możesz parsować wszystkich swoich konkurentów, a ciebie nikt nie może. Taka sobie zimna wojna.

Używanie BeautifulSoup do parsowania HTML

Kiedy mamy już kod HTML, możemy przystąpić do jego analizowania za pomocą BeautifulSoup. To jak otworzenie książki i przeczytanie jej zawartości:

Python

from bs4 import BeautifulSoup

# Przekazujemy zawartość kodu HTML do BeautifulSoup
soup = BeautifulSoup(response.text, 'html.parser')

# Zobaczmy, co jest w środku
print(soup.prettify())

Metoda prettify() ładnie formatuje kod HTML, abyś mógł go przeglądać. Na następnych zajęciach zaczniemy zagłębiać się w ten HTML, jak dzieci bawią się w piaskownicy. Wrócimy do domu zmęczeni, brudni, ale szczęśliwi :)

3. Praktyka: pobieranie i analiza HTML

Aby utrwalić zrozumienie tematu, wykonajmy ćwiczenie praktyczne. Spróbujemy wyodrębnić tytuł i opis ze strony example.com. Do tego użyjemy naszej wiedzy o HTML i nowej wiedzy o BeautifulSoup.

Wyodrębnianie danych

Python

# Wyodrębnianie tytułu strony
title = soup.title.string
print("Tytuł strony:", title)

# Wyodrębnianie głównego nagłówka (h1)
main_heading = soup.h1.string
print("Główny nagłówek:", main_heading)

# Wyodrębnianie treści tekstowej akapitu
paragraph = soup.find('p').text
print("Pierwszy akapit:", paragraph)

W tym przykładzie używamy atrybutów title, h1 oraz metody find(), aby pobrać potrzebne fragmenty informacji ze strony. Stajemy się cyberdetektywami badającymi wskazówki na miejscu zbrodni!

4. Typowe błędy

Na pewno, podczas pracy z web scrapingiem, zetkniesz się z typowymi błędami, które mogą obejmować nieprawidłowe przetwarzanie zapytań HTTP, błędne wyodrębnianie danych lub błędy w parsowaniu HTML. Tworzenie odpornych i niezawodnych skryptów wymaga cierpliwości i praktyki. Na przykład, zawsze sprawdzaj kod statusu (response.status_code), aby mieć pewność, że zapytanie zostało pomyślnie wykonane. Nieprawidłowe użycie metod find() i find_all() może prowadzić do błędów, jeśli nie uwzględnisz struktury stron HTML. Zawsze analizuj HTML, zanim zaczniesz parsowanie.

Web scraping ma wiele praktycznych zastosowań: od zbierania danych do analizy po automatyczne monitorowanie cen produktów. Ta wiedza może być przydatna podczas rozmów kwalifikacyjnych, gdzie mogą cię zapytać o przykładowy kod projektowy. W praktyce, na przykład, marketerzy używają scrapingu do monitorowania cen konkurentów, a deweloperzy — do integracji zewnętrznych stron.

Znajomość web scrapingu przyda się także przy przetwarzaniu informacji dla agregatorów wiadomości i systemów analitycznych. Będziesz mógł zautomatyzować rutynowe zadania, tworząc skrypty, które same zbierają dane z różnych źródeł. Pracujmy dalej nad naszym wirtualnym zastosowaniem i czujmy się jak prawdziwi mistrzowie internetu!

Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION