Zrušte vytváranie webových stránok pomocou tohto krásneho návodu pre polievku Python

Zrušte vytváranie webových stránok pomocou tohto krásneho návodu pre polievku Python

Beautiful Soup je open source knižnica Pythonu. Na zoškrabanie obsahu súborov XML a HTML používa navigačné analyzátory. Údaje potrebujete na niekoľko analytických účelov. Ak ste však v Pythone a v skriptovaní webu nováčik, knižnicu Python's Beautiful Soup stojí za to vyskúšať si v rámci projektu škrabania webu.





S open-source knižnicou Python s krásnou polievkou môžete získať údaje zoškrabaním akejkoľvek časti alebo prvku webovej stránky s maximálnou kontrolou nad procesom. V tomto článku sa pozrieme na to, ako môžete krásnu polievku použiť na zoškrabanie webovej stránky.





Ako nainštalovať krásnu polievku a začať s ňou

Predtým, ako budeme pokračovať, v tomto článku o tutoriáli o krásnej polievke použijeme Python 3 a krásna polievka 4 , najnovšia verzia Krásnej polievky. Uistite sa, že vy vytvoriť virtuálne prostredie Python izolovať váš projekt a jeho balíky od tých na vašom lokálnom počítači.





ako sťahovať video z akejkoľvek webovej stránky

Ak chcete začať, musíte si nainštalovať knižnicu Beautiful Soup vo svojom virtuálnom prostredí. Beautiful Soup je k dispozícii ako balík PyPi pre všetky operačné systémy, takže si ho môžete nainštalovať pomocou pip install beautifulsoup4 príkaz cez terminál.

Ak však používate Debian alebo Linux, vyššie uvedený príkaz stále funguje, ale môžete ho nainštalovať pomocou správcu balíkov spustením apt-get install python3-bs4 .



Aplikácia Beautiful Soup neškrabe adresy URL priamo. Funguje iba s hotovými súbormi HTML alebo XML. To znamená, že do neho nemôžete zadať adresu URL. Na vyriešenie tohto problému musíte získať adresu URL cieľového webu s knižnicou žiadostí Pythonu a až potom ho pridať do platformy Beautiful Soup.

Ak chcete sprístupniť knižnicu pre svoj škrabák, spustite súbor požiadavky na inštaláciu pipu príkaz cez terminál.





Ak chcete použiť knižnicu analyzátora XML, spustite pip install lxml nainštalovať to.

Pozrite sa na webovú stránku, ktorú chcete zoškrabať

Pred zoškrabaním akéhokoľvek webu, ktorý nepoznáte, je osvedčené skontrolovať jeho prvky. Môžete to urobiť prepnutím prehliadača do režimu vývojára. Je to celkom jednoduché použite Chrome DevTools ak používate prehliadač Google Chrome.





Je však potrebné skontrolovať webovú stránku, aby ste vedeli viac o jej značkách HTML, atribútoch, triedach a ID. To odhalí základné prvky webovej stránky a jej typy obsahu.

Pomáha vám tiež vyvinúť najlepšie stratégie, ktoré môžete použiť na získanie presných údajov, ktoré chcete z webovej stránky, a spôsob, akým ich môžete získať.

Ako zoškrabať údaje webových stránok pomocou krásnej polievky

Teraz, keď máte všetko pripravené a pripravené, otvorte preferovaný editor kódu a vytvorte nový súbor Python s pomenovaním. Môžete však tiež využívať webové IDE ako Jupyter Notebook ak nie ste oboznámení so spustením Pythonu cez príkazový riadok.

Ďalej importujte potrebné knižnice:

from bs4 import BeautifulSoup
import requests

Najprv sa pozrime, ako funguje knižnica žiadostí:

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

Po spustení kódu uvedeného vyššie vráti stav 200, čo znamená, že vaša požiadavka je úspešná. V opačnom prípade dostanete stav 400 alebo iné chybové stavy, ktoré indikujú neúspešnú požiadavku GET.

Nezabudnite vždy nahradiť webovú adresu webovej stránky v zátvorkách cieľovou adresou URL.

Akonáhle získate webovú stránku s príponou dostať Požiadavku potom odošlete spoločnosti Beautiful Soup, ktorá teraz môže čítať obsah ako súbory HTML alebo XML pomocou vstavaného analyzátora XML alebo HTML, v závislosti od zvoleného formátu.

Pozrite sa na nasledujúci útržok kódu a zistite, ako to urobiť pomocou syntaktického analyzátora HTML:

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

Vyššie uvedený kód vracia celý DOM webovej stránky s jej obsahom.

Vyrovnanejšiu verziu DOM môžete získať aj pomocou prettify metóda. Môžete vyskúšať toto a pozrieť sa na 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 tiež získať čistý obsah webovej stránky bez načítania jej prvku pomocou súboru .text metóda:

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

Ako zoškrabať obsah webovej stránky podľa názvu značky

Môžete tiež zoškrabať obsah v konkrétnej značke pomocou aplikácie Beautiful Soup. Na to musíte do žiadosti o škrabku Beautiful Soup zahrnúť názov cieľovej značky.

Pozrime sa napríklad, ako môžete získať obsah vo formáte h2 značky webovej stránky.

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

V úryvku kódu vyššie polievka.h2 vráti prvý h2 prvok webovej stránky a ostatné ignoruje. Načítať všetky h2 prvky, môžete použiť find_all vstavaná funkcia a pre slučka Pythonu:

ako spoznať ruského robota na Facebooku
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 vráti všetko h2 prvky a ich obsah. Obsah však môžete získať bez načítania značky pomocou .strunka metóda:

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)

Túto metódu môžete použiť pre ľubovoľnú značku HTML. Všetko, čo musíte urobiť, je nahradiť h2 označte tým, ktorý sa vám páči.

Môžete však zoškrabať viac značiek tak, že zoznam značiek vložíte do súboru find_all metóda. Napríklad nasledujúci blok kódu skracuje obsah súboru do , h2 a titul značky:

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)

Ako zoškrabať webovú stránku pomocou ID a názvu triedy

Po kontrole webovej stránky pomocou DevTools vám umožní získať viac informácií o atribútoch id a triedy, ktoré obsahujú každý prvok v jeho DOM. Akonáhle budete mať tieto informácie, môžete túto webovú stránku zoškrabať pomocou tejto metódy. Je to užitočné, keď sa obsah cieľového komponentu vytesňuje z databázy.

Môžete použiť Nájsť metóda pre škrabky id a tried. Na rozdiel od find_all metóda, ktorá vracia iterovateľný objekt, Nájsť metóda funguje na jednom neotierateľnom cieli, ktorým je id v tomto prípade. Nie je teda potrebné používať pre slučka s ním.

Pozrime sa na príklad toho, ako môžete zoškrabať obsah nižšie uvedenej stránky pomocou 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)

Ak to chcete urobiť pre názov triedy, nahraďte znak id s trieda . Avšak, písanie trieda vedie priamo k zámene syntaxe, pretože Python to vníma ako kľúčové slovo. Aby ste túto chybu obišli, musíte pred triedu napísať podčiarkovník takto: trieda_ .

Riadok obsahujúci ID v zásade znie:

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

Webovú stránku však môžete zoškrabať aj tak, že zavoláte konkrétny názov značky s príslušným ID alebo triedou:

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

Ako vyrobiť škrabku na opakované použitie s krásnou polievkou

Môžete vytvoriť triedu a spojiť všetok predchádzajúci kód do funkcie v tejto triede, aby ste vytvorili opakovane použiteľnú škrabku, ktorá získa obsah niektorých značiek a ich identifikátorov. To môžeme dosiahnuť vytvorením funkcie, ktorá akceptuje päť argumentov: adresu URL, dva názvy značiek a im zodpovedajúce ID alebo triedy.

Predpokladajme, že chcete zoškrabať cenu košieľ z webovej stránky elektronického obchodu. Nasledujúca trieda škrabiek nižšie extrahuje značky cien a tričiek s ich zodpovedajúcimi identifikátormi alebo triedami a potom ich vráti ako dátový rámec Pandas s názvami stĺpcov „Price“ a Shirt_name.

Uistite sa, že vy pip install pandy prostredníctvom terminálu, ak ste to ešte neurobili.

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, ktorú ste práve vyrobili, je opakovane použiteľný modul a môžete ju importovať a použiť v inom súbore Python. Zavolať na oškrabať funkciu zo svojej triedy, ktorú používate scrapeit.scrape ('Webová adresa URL', 'price_tag', 'price_id', 'shirt_tag', 'shirt_id') . Ak nezadáte adresu URL a ďalšie parametre, prípona inak vyhlásenie vás k tomu vyzve.

Ak chcete použiť tento scaper v inom súbore Pythonu, môžete ho importovať takto:

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

Poznámka: scraper_module je názov súboru Python s triedou scraper.

Môžete tiež skontrolovať Krásna dokumentácia k polievke ak sa chcete ponoriť hlbšie do toho, ako to môžete čo najlepšie využiť.

Krásna polievka je cenný nástroj na škrabanie webu

Beautiful Soup je výkonná škrabka na obrazovku Pythonu, ktorá vám dáva kontrolu nad tým, ako sa vaše údaje dostanú počas zoškrabávania. Je to cenný obchodný nástroj, pretože vám môže poskytnúť prístup k webovým údajom konkurencie, ako sú ceny, trendy na trhu a ďalšie.

previesť 72 dpi na 300 dpi

Napriek tomu, že sme v tomto článku vyrobili škrabku na značky, s touto výkonnou knižnicou Pythonu si môžete stále pohrať a vytvoriť tak užitočnejšie nástroje na škrabanie.

zdieľam zdieľam Tweet E -mail Najlepšie nástroje na škrabanie webu online

Potrebujete zhromažďovať údaje z webových stránok na analytické účely? Tieto nástroje na škrabanie webu to uľahčujú.

Čítajte ďalej
Súvisiace témy
  • Programovanie
  • Python
O autorovi Idisou Omisola(94 publikovaných článkov)

Idowu je zanietený pre čokoľvek, čo sa týka inteligentných technológií a produktivity. Vo svojom voľnom čase sa hrá s kódovaním a keď sa nudí, prejde na šachovnicu, ale tiež rád, keď sa raz za čas odtrhne od rutiny. Jeho vášeň ukazovať ľuďom cestu okolo moderných technológií ho motivuje písať viac.

Viac od Idowu Omisola

prihlásiť sa ku odberu noviniek

Pripojte sa k nášmu bulletinu a získajte technické tipy, recenzie, bezplatné elektronické knihy a exkluzívne ponuky!

Kliknutím sem sa prihlásite na odber