CodeGym /Kurs Javy /Python SELF PL /Wyodrębnianie tekstów i atrybutów z elementów HTML za pom...

Wyodrębnianie tekstów i atrybutów z elementów HTML za pomocą metod BeautifulSoup

Python SELF PL
Poziom 32 , Lekcja 0
Dostępny

1. Wprowadzenie do metod wyodrębniania tekstów

Dziś nauczymy się wyciągać cenne dane tekstowe i atrybuty z elementów HTML. Odrzućcie swoje maczety, ponieważ z BeautifulSoup praca z kodem jest jak spacer po jesiennym sadzie, gdzie jabłka aż się proszą, by je zerwać. Gotowi na zbieranie owoców nauki? No to zaczynamy!

Metody wyciągania tekstów z elementów HTML są na pierwszym miejscu na naszej liście. Zanim zaczniemy wyciągać tekst, załadujmy stronę.

Python

import requests
from bs4 import BeautifulSoup

# Ładujemy kod HTML strony
url = 'https://example.com'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')

Teraz mamy obiekt soup, który zawiera strukturę drzewa naszego dokumentu HTML. Wyciągnijmy tekst z jakiegoś elementu, na przykład z nagłówka.

Metoda .text i get_text()

Właściwość .text i jej odpowiednik - metoda get_text() pozwalają uzyskać tekstową zawartość elementu (oraz wszystkich jego wewnętrznych elementów).

Python

# Wyciągamy tekst z pierwszego znalezionego nagłówka h1
h1_tag = soup.find('h1')
print(h1_tag.text)  # lub h1_tag.get_text()

Spróbujcie sami: znajdźcie inne elementy, używając metod wyszukiwania, które poznaliśmy na poprzednich wykładach, i wyciągnijcie z nich tekst. Zdziwicie się, ile informacji można uzyskać!

2. Wyodrębnianie wartości atrybutów

Teksty tekstami, ale czasami ważne dane ukryte są w atrybutach, jak paszporty w kieszeniach. Wyobraźcie sobie, że musicie poznać adres linku lub uzyskać URL obrazka (i nie pytajcie mnie, po co to komu; może akurat chcecie zbierać kolekcję zdjęć kotków).

Wyodrębnianie wartości atrybutów

Załóżmy, że mamy element linku <a href="https://example.com">Example</a>. Jak uzyskać wartość href? To proste.

Python

# Wyciągamy link
a_tag = soup.find('a')
link = a_tag['href']
print("Link:", link)

Ten kod wyciągnął wartość atrybutu href. Jeśli są jakieś inne przydatne atrybuty, możecie je wyciągnąć w analogiczny sposób.

Próbujemy wyciągnąć obrazek

Wyciąganie URL obrazka może być równie proste. Rozważmy przypadek z <img src="image.jpg" alt="Kotek">.

Python

# Wyciągamy URL obrazka
img_tag = soup.find('img')
image_url = img_tag['src']
print("URL obrazka:", image_url)

Piękno pracy z BeautifulSoup polega na tym, że pozwala łatwo znajdować i wyciągać dane, nie zmuszając nas przy tym do zastanawiania się, jak dokładnie działa struktura HTML.

3. Przykłady wyodrębniania tekstów i atrybutów

Czas na przykłady. Przyjrzyjmy się nieco bardziej skomplikowanemu zadaniu: wyciągniemy wszystkie linki na stronie razem z tekstem wewnątrz tagów <a>.

Przykład: wyodrębnianie wszystkich linków z tekstem

Python

# Znajdujemy wszystkie tagi a
a_tags = soup.find_all('a')

# Wyświetlamy link i tekst
for a_tag in a_tags:
    link = a_tag['href']
    text = a_tag.get_text()
    print(f"Tekst: {text}, Link: {link}")

Jak widać, metoda find_all wygodnie znajduje wszystkie elementy spełniające warunki wyszukiwania, a pętla for pozwala przejść przez każdy z nich.

4. Obsługa błędów

Nie zapominajcie o obsłudze błędów. Czasami struktura HTML może być inna, niż się spodziewacie, albo element może nie mieć oczekiwanego atrybutu. Upewnijcie się, że wasz kod nie "padnie" w takich momentach.

Python

# Przykład obsługi błędów przy wyodrębnianiu atrybutu
try:
    link = a_tag['href']
except KeyError:
    link = None
    print("Atrybut href nie znaleziony!")

To sprawi, że skrypt będzie bardziej odporny i nie zatrzyma się z powodu jednego mało oczywistego błędu.

5. Zastosowanie w praktyce

W 2019 roku rosyjski przedsiębiorca podzielił się historią, jak jego firma, specjalizująca się w parsowaniu danych, osiągnęła obrót w wysokości 20 milionów rubli rocznie. Podkreślił, że automatyczne zbieranie informacji nie ogranicza konkurencji, ale przeciwnie, pomaga firmom dostosowywać się do rynku.

Na przykład jeden z klientów zamówił parser do codziennego pobierania danych o stanie magazynu z witryny dostawcy, co pozwalało na szybkie aktualizowanie asortymentu i cen we własnym sklepie internetowym. Przedsiębiorca zauważył również, że mimo prób niektórych witryn, które utrudniają parsowanie, nowoczesne technologie skutecznie obchodzą takie przeszkody, zapewniając firmom dostęp do potrzebnych danych do podejmowania strategicznych decyzji.

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