V dnešní době, kdy data hrají klíčovou roli, se tradiční metody ručního získávání informací stávají zastaralými. Díky rozšířenému přístupu k internetu se web stal obrovským zdrojem dat. Moderním, efektivnějším a časově úspornějším způsobem, jak data získávat, je web scraping. A pokud jde o web scraping, Python nabízí nástroj zvaný Beautiful Soup. V tomto článku si ukážeme, jak Beautiful Soup nainstalovat, abyste mohli začít s web scrapingem.
Než se pustíme do instalace a používání Beautiful Soup, pojďme se podívat, proč byste se o tento nástroj měli zajímat.
Co je Beautiful Soup?
Představte si, že zkoumáte „Dopad COVID-19 na lidské zdraví“ a nalezli jste několik webových stránek s relevantními daty. Co když ale tyto stránky nenabízejí možnost stažení dat jedním kliknutím? Právě zde vstupuje na scénu Beautiful Soup.
Beautiful Soup je populární knihovna v Pythonu, která slouží k extrakci dat z cílových webových stránek. Umožňuje snadné načítání informací z HTML nebo XML dokumentů.
Leonard Richardson představil koncept Beautiful Soup pro web scraping v roce 2004. Jeho přínos k projektu však pokračuje dodnes. S hrdostí oznamuje každou novou verzi Beautiful Soup na svém Twitteru.
Přestože byla knihovna Beautiful Soup pro web scraping vyvinuta primárně pro Python 3.8, bezproblémově funguje i s Pythonem 3 a Pythonem 2.4.
Webové stránky často používají ochranu captcha, aby bránily přístupu AI nástrojům k jejich datům. V tomto případě je možné provést drobné úpravy v hlavičce „user-agent“ v Beautiful Soup nebo použít API pro řešení Captcha, aby simulovaly chování běžného prohlížeče a oklamaly detekční mechanismy.
Pokud nemáte dostatek času na prozkoumávání možností Beautiful Soup, nebo chcete, aby web scraping probíhal snadno a efektivně, možná byste měli zvážit použití web scraping API, kde stačí zadat URL a požadovaná data se vám dostanou do rukou.
Pro programátory nebude používání Beautiful Soup pro web scraping náročné, protože se vyznačuje jednoduchou syntaxí pro procházení webových stránek a extrahování požadovaných dat na základě zadaných kritérií. Je však vhodný i pro začátečníky.
Ačkoli Beautiful Soup není určen pro pokročilé web scraping úlohy, nejlépe se uplatní při extrakci dat z dokumentů napsaných v značkovacích jazycích.
Jasná a detailní dokumentace je dalším silným argumentem, proč Beautiful Soup vyzkoušet.
Pojďme si ukázat, jak jednoduše Beautiful Soup do vašeho počítače nainstalovat.
Jak nainstalovat Beautiful Soup pro web scraping?
Pip, jednoduchý správce balíčků pro Python, vyvinutý v roce 2008, je mezi vývojáři standardním nástrojem pro instalaci libovolných knihoven Pythonu a jejich závislostí.
Pip je standardně dodáván s instalací nejnovějších verzí Pythonu. Pokud máte na svém systému nainstalovanou některou z nedávných verzí Pythonu, můžete rovnou začít.
Otevřete příkazový řádek a zadejte následující příkaz pip pro okamžitou instalaci Beautiful Soup:
pip install beautifulsoup4
Na displeji by se vám mělo zobrazit něco podobného jako na následujícím obrázku.
Pro minimalizaci chyb se ujistěte, že máte aktualizovaný instalátor pip na nejnovější verzi.
Příkaz pro aktualizaci instalátoru pip na nejnovější verzi je:
pip install --upgrade pip
Tímto jsme úspěšně zvládli instalaci Beautiful Soup.
Nyní, když máte Beautiful Soup nainstalovaný, se podíváme na to, jak jej používat pro web scraping.
Jak importovat a pracovat s Beautiful Soup pro web scraping?
Pro import Beautiful Soup do vašeho aktuálního Python skriptu, zadejte do vašeho Python IDE následující příkaz:
from bs4 import BeautifulSoup
Tímto je Beautiful Soup dostupný ve vašem Python souboru a můžete jej začít využívat k web scrapingu.
Pojďme se podívat na příklad kódu, abychom se naučili, jak extrahovat požadovaná data pomocí Beautiful Soup.
Beautiful Soup můžeme instruovat, aby vyhledával konkrétní HTML tagy na zdrojové webové stránce a extrahoval data z těchto tagů.
V tomto příkladu budeme používat marketwatch.com, který v reálném čase aktualizuje ceny akcií různých společností. Získame některá data z tohoto webu, abyste se seznámili s knihovnou Beautiful Soup.
Importujeme balíček „requests“, který nám umožní přijímat a reagovat na HTTP požadavky, a „urllib“ pro načtení webové stránky z její adresy URL.
from urllib.request import urlopen import requests
Uložíme odkaz na webovou stránku do proměnné pro snadnější pozdější přístup.
url="https://www.marketwatch.com/investing/stock/amzn"
Dále použijeme metodu „urlopen“ z knihovny „urllib“ pro uložení HTML stránky do proměnné. Předáme URL funkci „urlopen“ a výsledek uložíme do proměnné.
page = urlopen(url)
Vytvoříme objekt Beautiful Soup a analyzujeme požadovanou webovou stránku pomocí „html.parser“.
soup_obj = BeautifulSoup(page, 'html.parser')
Nyní je celý HTML skript cílové webové stránky uložen v proměnné ‚soup_obj‘.
Než budeme pokračovat, podíváme se na zdrojový kód cílové stránky, abychom se dozvěděli více o HTML skriptu a znacích.
Klikněte pravým tlačítkem myši kdekoli na webové stránce a vyberte možnost „Zkontrolovat“, jak je znázorněno níže.
Kliknutím na „Zkontrolovat“ zobrazíte zdrojový kód.
Ve výše uvedeném zdrojovém kódu najdete tagy, třídy a další informace o jednotlivých prvcích zobrazených na webu.
Metoda „find“ v Beautiful Soup nám umožňuje vyhledat požadované HTML tagy a získat z nich data. Pro extrahování konkrétních dat metodě zadáme název třídy a tag.
Například název „Amazon.com Inc.“ zobrazený na webové stránce má název třídy: ‚company__name‘ v tagu ‚h1‘. Tyto informace můžeme předat metodě ‚find‘ a extrahovat odpovídající fragment HTML do proměnné.
name = soup_obj.find('h1', attrs={'class': 'company__name'})
Vypíšeme HTML skript uložený v proměnné „name“ a požadovaný text na obrazovku.
print(name) print(name.text)
Můžeme vidět extrahovaná data vytištěná na obrazovku.
Web scraping webu IMDb
Mnoho z nás před zhlédnutím filmu hledá hodnocení na webu IMBb. V tomto příkladu získáme seznam nejlépe hodnocených filmů, což vám pomůže se lépe seznámit s web scrapingem pomocí Beautiful Soup.
Krok 1: Importujeme knihovny Beautiful Soup a requests.
from bs4 import BeautifulSoup import requests
Krok 2: Přiřadíme URL, kterou chceme získat, do proměnné „url“ pro snadnější přístup v kódu.
Balíček „requests“ se používá k získání HTML stránky z adresy URL.
url = requests.get('https://www.imdb.com/search/title/?count=100&groups=top_1000&sort=user_rating')
Krok 3: V následujícím kódu analyzujeme HTML stránku aktuální adresy URL, abychom vytvořili objekt Beautiful Soup.
soup_obj = BeautifulSoup(url.text, 'html.parser')
Proměnná „soup_obj“ nyní obsahuje celý HTML skript požadované webové stránky, jak je znázorněno na obrázku.
Podíváme se do zdrojového kódu webové stránky, abychom zjistili HTML skript dat, která chceme získat.
Najeďte kurzorem myši na prvek webové stránky, který chcete extrahovat. Dále na něj klikněte pravým tlačítkem myši a vyberte „Zkontrolovat“ pro zobrazení zdrojového kódu tohoto prvku. Lépe vám to znázorní následující obrázky.
Třída ‚lister-list‘ obsahuje veškerá data o nejlépe hodnocených filmech jako podsekce v tagu div.
V HTML skriptu každé filmové karty pod třídou ‚lister-item mode-advanced‘ máme tag ‚h3‘, který obsahuje název filmu, hodnocení a rok vydání, jak je zvýrazněno na obrázku.
Poznámka: Metoda „find“ v Beautiful Soup vyhledává první tag, který odpovídá zadanému vstupu. Oproti tomu metoda „find_all“ vyhledá všechny tagy odpovídající danému vstupu.
Krok 4: Pomocí metod „find“ a „find_all“ uložíme HTML skript názvu, hodnocení a roku každého filmu do seznamové proměnné.
top_movies = soup_obj.find('div',attrs={'class': 'lister-list'}).find_all('h3')
Krok 5: Procházíme seznam filmů uložený v proměnné „top_movies“ a pomocí kódu extrahujeme název, hodnocení a rok každého filmu v textovém formátu z jeho HTML skriptu.
for movie in top_movies: movi_name = movie.a.text rank = movie.span.text.rstrip('.') year = movie.find('span', attrs={'class': 'lister-item-year text-muted unbold'}) year = year.text.strip('()') print(movi_name + " ", rank+ " ", year+ " ")
Na výstupu vidíme seznam filmů s jejich názvem, hodnocením a rokem vydání.
Vytištěná data můžeme snadno přesunout do excelového listu pomocí dalšího Python kódu a použít je pro další analýzu.
Závěrečná slova
Tento článek vás provedl instalací knihovny Beautiful Soup pro web scraping. Také příklady web scrapingu by vám měly pomoci začít používat Beautiful Soup.
Jelikož vás zajímá instalace Beautiful Soup pro web scraping, doporučuji vám podívat se na podrobnější průvodce, kde se dozvíte více o web scrapingu pomocí Pythonu.