Vyškrábat web s tímto krásným výukovým programem Python pro polévku

Vyškrábat web s tímto krásným výukovým programem Python pro polévku

Beautiful Soup je otevřená knihovna Pythonu. K procházení obsahu souborů XML a HTML používá navigační analyzátory. Data potřebujete k několika analytickým účelům. Pokud jste však v Pythonu a web scrapingu noví, stojí za to vyzkoušet si knihovnu Python's Beautiful Soup pro projekt web scraping.





Díky open-source knihovně Python s krásnou polévkou můžete získat data seškrábnutím jakékoli části nebo prvku webové stránky s maximální kontrolou nad procesem. V tomto článku se podíváme na to, jak můžete použít Beautiful Soup k oškrábání webu.





Jak nainstalovat krásnou polévku a začít s ní

Než budeme pokračovat, v tomto článku tutoriálu o krásné polévce použijeme Python 3 a krásná polévka 4 , nejnovější verze Krásné polévky. Ujistěte se, že vy vytvořit virtuální prostředí Pythonu izolovat váš projekt a jeho balíčky od těch na vašem místním počítači.





jak otestovat, zda váš pevný disk selhává

Chcete -li začít, musíte si do virtuálního prostředí nainstalovat knihovnu Beautiful Soup. Beautiful Soup je k dispozici jako balíček PyPi pro všechny operační systémy, takže jej můžete nainstalovat pomocí pip install beautifulsoup4 příkaz přes terminál.

Pokud však používáte Debian nebo Linux, výše uvedený příkaz stále funguje, ale můžete jej nainstalovat pomocí správce balíčků spuštěním apt-get install python3-bs4 .



Krásná polévka neškrábe adresy URL přímo. Funguje pouze s hotovými soubory HTML nebo XML. To znamená, že do něj nemůžete zadat URL přímo. Chcete -li tento problém vyřešit, musíte před odesláním do Beautiful Soup získat adresu URL cílového webu s knihovnou požadavků Pythonu.

Chcete -li zpřístupnit tuto knihovnu pro svůj škrabák, spusťte soubor požadavky na instalaci pipu příkaz přes terminál.





Chcete -li použít knihovnu analyzátoru XML, spusťte pip install lxml jej nainstalovat.

Zkontrolujte webovou stránku, kterou chcete oškrábat

Před škrábáním jakékoli webové stránky, kterou neznáte, je doporučeno zkontrolovat její prvky. To lze provést přepnutím prohlížeče do režimu vývojáře. Je to docela snadné použijte Chrome DevTools pokud používáte Google Chrome.





Je však nutné zkontrolovat webovou stránku, abyste věděli více o jejích značkách HTML, atributech, třídách a ID. Tím se odhalí základní prvky webové stránky a její typy obsahu.

Pomáhá vám také vyvinout nejlepší strategie, které můžete použít k získání přesných požadovaných dat z webu a jak je můžete získat.

Jak vyškrábat data webových stránek pomocí krásné polévky

Nyní, když máte vše připraveno, otevřete preferovaný editor kódu a vytvořte nový soubor Pythonu s vybraným názvem. Můžete však také využívat webové IDE jako Jupyter Notebook pokud nejste obeznámeni se spuštěním Pythonu přes příkazový řádek.

Dále importujte potřebné knihovny:

from bs4 import BeautifulSoup
import requests

Nejprve se podívejme, jak funguje knihovna požadavků:

from bs4 import BeautifulSoup
import requests
website = requests.get('http://somewebpages.com')
print(website)

Když spustíte výše uvedený kód, vrátí stav 200, což znamená, že váš požadavek je úspěšný. V opačném případě získáte stav 400 nebo jiné chybové stavy, které indikují neúspěšný požadavek GET.

Nezapomeňte vždy nahradit URL webové stránky v závorkách vaší cílovou URL.

Jakmile získáte web s dostat žádost, poté ji předáte společnosti Beautiful Soup, která nyní může číst obsah jako soubory HTML nebo XML pomocí vestavěného analyzátoru XML nebo HTML, v závislosti na zvoleném formátu.

Podívejte se na tento další fragment kódu a zjistěte, jak to provést pomocí analyzátoru HTML:

from bs4 import BeautifulSoup
import requests
website = requests.get('http://somewebpages.com')
soup = BeautifulSoup(website.content, 'html.parser')
print(soup)

Výše uvedený kód vrací celý DOM webové stránky s jejím obsahem.

Rovněž můžete získat vyrovnanější verzi DOM pomocí prettify metoda. Můžete to vyzkoušet, abyste viděli jeho výstup:

from bs4 import BeautifulSoup
import requests
website = requests.get('http://somewebpages.com/')
soup = BeautifulSoup(website.content, 'html.parser')
print(soup.prettify())

Můžete také získat čistý obsah webové stránky bez načtení jejího prvku pomocí .text metoda:

from bs4 import BeautifulSoup
import requests
website = requests.get('http://somewebpages.com/')
soup = BeautifulSoup(website.content, 'html.parser')
print(soup.text)

Jak vyškrábat obsah webové stránky podle názvu značky

Můžete také oškrábat obsah v konkrétní značce pomocí aplikace Beautiful Soup. Chcete -li to provést, musíte do požadavku škrabky na krásnou polévku zahrnout název cílové značky.

Podívejme se například, jak můžete získat obsah v souboru h2 tagy webové stránky.

from bs4 import BeautifulSoup
import requests
website = requests.get('http://somewebpages.com/')
soup = BeautifulSoup(website.content, 'html.parser')
print(soup.h2)

Ve výše uvedeném fragmentu kódu polévka. h2 vrací první h2 prvek webové stránky a zbytek ignoruje. Načíst vše h2 prvky, můžete použít find_all vestavěná funkce a pro smyčka Pythonu:

co je bixby home na mém telefonu
from bs4 import BeautifulSoup
import requests
website = requests.get('http://somewebpages.com/')
soup = BeautifulSoup(website.content, 'html.parser')
h2tags = soup.find_all('h2')
for soups in h2tags:
print(soups)

Ten blok kódu vrací vše h2 prvky a jejich obsah. Obsah však můžete získat bez načtení značky pomocí .tětiva metoda:

from bs4 import BeautifulSoup
import requests
website = requests.get('http://somewebpages.com/')
soup = BeautifulSoup(website.content, 'html.parser')
h2tags = soup.find_all('h2')
for soups in h2tags:
print(soups.string)

Tuto metodu můžete použít pro jakýkoli tag HTML. Vše, co musíte udělat, je vyměnit h2 označte tím, který se vám líbí.

Můžete však také seškrabat více tagů předáním seznamu tagů do souboru find_all metoda. Například níže uvedený blok kódu škrábe obsah na , h2 , a titul tagy:

from bs4 import BeautifulSoup
import requests
website = requests.get('http://somewebpages.com/')
soup = BeautifulSoup(website.content, 'html.parser')
tags = soup.find_all(['a', 'h2', 'title'])
for soups in tags:
print(soups.string)

Jak oškrábat webovou stránku pomocí ID a názvu třídy

Po kontrole webu pomocí DevTools vám to umožní zjistit více o atributech id a class, které drží každý prvek v jeho DOM. Jakmile budete mít tuto informaci, můžete tuto webovou stránku oškrábat pomocí této metody. Je to užitečné, když se obsah cílové komponenty opakuje z databáze.

Můžete použít nalézt metoda pro škrabky id a tříd. Na rozdíl od find_all metoda, která vrací iterovatelný objekt, nalézt metoda funguje na jednom, ne iterovatelném cíli, což je id v tomto případě. Nemusíte tedy používat pro smyčka s ním.

Podívejme se na příklad toho, jak můžete seškrabat obsah níže uvedené stránky pomocí id:

from bs4 import BeautifulSoup
import requests
website = requests.get('http://somewebpages.com/')
soup = BeautifulSoup(website.content, 'html.parser')
id = soup.find(id = 'enter the target id here')
print(id.text)

Chcete -li to provést pro název třídy, nahraďte id s třída . Nicméně psaní třída přímo vede k záměně syntaxe, protože Python to vidí jako klíčové slovo. Chcete -li tuto chybu obejít, musíte před třídu napsat podtržítko takto: třída_ .

V podstatě se řádek obsahující ID stane:

my_classes = soup.find(class_ = 'enter the target class name here')
print(my_classes.text)

Webovou stránku však můžete také oškrábat tak, že zavoláte konkrétní název značky s odpovídajícím ID nebo třídou:

data = soup.find_all('div', class_ = 'enter the target class name here')
print(data)

Jak vyrobit opakovaně použitelnou škrabku s krásnou polévkou

Můžete vytvořit třídu a dát veškerý předchozí kód dohromady do funkce v této třídě, abyste vytvořili opakovaně použitelnou škrabku, která získá obsah některých značek a jejich ID. To lze provést vytvořením funkce, která přijímá pět argumentů: adresu URL, dva názvy značek a jim odpovídající ID nebo třídy.

Předpokládejme, že chcete seškrábat cenu triček z webu elektronického obchodování. Níže uvedená třída škrabky extrahuje značky cen a triček s jejich odpovídajícími idy nebo třídami a poté je vrátí jako datový rámec Pandas s 'Price' a Shirt_name jako názvy sloupců.

Ujistěte se, že vy pip install pandy přes terminál, pokud jste to ještě neudělali.

import pandas as pd
class scrapeit:
try:
def scrape(website=None, tag1=None, id1=None, tag2=None, id2=None):
if not (website and tag1 and id1 and tag2 and id2)==None:
try:
page = requests.get(website)
soup = BeautifulSoup(page.content, 'html.parser')
infotag1 = soup.find_all(tag1, id1)
infotag2 = soup.find_all(tag2, id2)
priced = [prices.text for prices in infotag1]
shirt = [shirts.text for shirts in infotag2]
data = {
'Price':priced,
'Shirt_name':shirt}
info = pd.DataFrame(data, columns=['Price', 'Shirt_name'])
print(info)
except:
print('Not successful')
else:
print('Oops! Please enter a website, two tags and thier corresponding ids')
except:
print('Not successful!')

Škrabka, kterou jste právě vyrobili, je opakovaně použitelný modul a můžete ji importovat a použít v jiném souboru Pythonu. Chcete -li zavolat škrábanec funkce ze své třídy, kterou používáte scrapeit.scrape ('URL webové stránky', 'price_tag', 'price_id', 'shirt_tag', 'shirt_id') . Pokud neuvedete adresu URL a další parametry, jiný prohlášení vás k tomu vyzve.

Chcete -li použít tento scaper v jiném souboru Pythonu, můžete jej importovat takto:

from scraper_module import scrapeit
scrapeit.scrape('URL', 'price_tag', 'price_id', 'shirt_tag', 'shirt_id')

Poznámka: scraper_module je název souboru Python obsahující třídu scraper.

Můžete také zkontrolovat Krásná dokumentace polévky pokud se chcete ponořit hlouběji do toho, jak toho můžete co nejlépe využít.

Krásná polévka je cenný nástroj pro škrábání webu

Beautiful Soup je výkonná škrabka na obrazovku Pythonu, která vám dává kontrolu nad tím, jak se vaše data dostanou během škrábání. Je to cenný obchodní nástroj, protože vám může poskytnout přístup k webovým datům konkurence, jako jsou ceny, trendy na trhu a další.

jak přeformátovat flash disk

Ačkoli jsme v tomto článku vytvořili škrabku na tagy, stále si můžete hrát s touto výkonnou knihovnou Pythonu a vytvářet užitečnější nástroje pro škrábání.

Podíl Podíl tweet E-mailem Nejlepší nástroje pro škrábání webu online

Potřebujete shromažďovat data z webových stránek pro analytické účely? Tyto nástroje pro škrábání webu to usnadňují.

Číst dále
Související témata
  • Programování
  • Krajta
O autorovi Idisou Omisola(94 publikovaných článků)

Idowu je zapálený pro cokoli chytrého a produktivního. Ve svém volném čase si hraje s kódováním a když se nudí, přepne na šachovnici, ale také se rád jednou za čas odpoutá od rutiny. Jeho vášeň ukazovat lidem cestu kolem moderních technologií ho motivuje psát více.

Více od Idowu Omisola

Přihlaste se k odběru našeho zpravodaje

Připojte se k našemu zpravodaji a získejte technické tipy, recenze, bezplatné elektronické knihy a exkluzivní nabídky!

Kliknutím sem se přihlásíte k odběru