Krásna polievka

Výukový program pre Python BeautifulSoup pre začiatočníkov

Výukový program pre Python BeautifulSoup pre začiatočníkov
Web scraping má v dnešnom svete veľký význam. Každý potrebuje údaje z rôznych zdrojov vrátane webových stránok. V tomto článku sa pozrieme na to, ako analyzovať html s knižnicou beautifulsoup. Extrahovanie potrebných údajov z množstva abecedy a symbolov sa vďaka tejto skvelej knižnici stalo oveľa jednoduchším. BeautifulSoup napísaný v Pythone sa dá ľahko nainštalovať na váš počítač pomocou nástroja na inštaláciu pipov v Pythone. Nasledujúci príkaz by pomohol nainštalovať knižnicu:

pip nainštalujte BeautifulSoup4

Ak chcete skontrolovať, či bola inštalácia úspešná, aktivujte interaktívny shell Python a importujte program BeautifulSoup. Ak sa nezobrazí žiadna chyba, znamená to, že bolo všetko v poriadku.  Ak neviete, ako na to, zadajte do terminálu nasledujúce príkazy.

$ python
Python 3.5.2 (predvolené, 14. septembra 2017, 22:51:06)
[GCC 5.4.0 20160609] v systéme Linux
Ďalšie informácie získate zadaním výrazu „help“, „copyright“, „credit“ alebo „license“.
>>> import bs4

Ak chcete pracovať s knižnicou BeautifulSoup, musíte odovzdať html. Pri práci so skutočnými webovými stránkami môžete získať html webovej stránky pomocou knižnice požiadaviek. Inštalácia a použitie knižnice požiadaviek presahuje rámec tohto článku, v dokumentácii sa však viete orientovať úplne ľahko. V tomto článku jednoducho použijeme html v reťazci pythonu, ktorý by sme volali html.

html = "" "

Profil zamestnanca



Názov:Dr. Peter Parker

Práca:Inžinier strojového učenia

Telefón:+12345678910


Webová stránka:
pparkerworks.com



„“ „

Ak chcete použiť beautifulsoup, importujeme ich do kódu pomocou kódu uvedeného nižšie:

z importu bs4 BeautifulSoup

Toto by zaviedlo BeautifulSoup do nášho priestoru mien a môžeme ho použiť pri analýze nášho reťazca.

soup = BeautifulSoup (html, "lxml")

Teraz, polievka je objekt BeautifulSoup typu bs4.BeautifulSoup a môžeme vykonať všetky operácie BeautifulSoup na serveri polievkapremenná.

Poďme sa teraz pozrieť na niektoré veci, ktoré môžeme s BeautifulSoup robiť.

MOHÚ BYŤ Oškliví, KRÁSNY

Keď BeautifulSoup analyzuje html, zvyčajne to nie je v najlepšom formáte. Medzery sú dosť hrozné. Značky sa hľadajú ťažko. Tu je obrázok, ktorý ukazuje, ako by vyzerali, keď vytlačíte polievka:

Existuje však riešenie tohto problému. Riešenie poskytuje html perfektné medzery, vďaka čomu veci vyzerajú dobre. Toto riešenie sa zaslúžene nazýva „predstierať„.

Je pravda, že túto funkciu nemusíte používať väčšinu času; niekedy však nemusí byť prístup k nástroju kontroly prvkov webového prehliadača. V tých časoch obmedzených zdrojov by sa vám zdala metóda prettify veľmi užitočná.

Používate ho takto:

polievka.prettify ()

Značka bude vyzerať správne rozmiestnená, rovnako ako na obrázku nižšie:

Keď na polievku použijete metódu prettify, výsledkom už nebude typ bs4.Krásna polievka. Výsledkom je teraz typ „unicode“. To znamená, že na ňu nemôžete použiť iné metódy BeautifulSoup, avšak samotná polievka to neovplyvní, takže sme v bezpečí.

NAJDETE NAŠE OBĽÚBENÉ ZNAČKY

HTML sa skladá zo značiek. Ukladá do nich všetky svoje údaje a uprostred všetkého toho neporiadku sa nachádzajú údaje, ktoré potrebujeme. To v zásade znamená, že keď nájdeme správne značky, môžeme získať to, čo potrebujeme.

Ako teda nájdeme správne značky? Využívame metódy find a find_all spoločnosti BeautifulSoup.

Fungujú takto:

The Nájsť metóda vyhľadá prvý tag s potrebným názvom a vráti objekt typu bs4.element.Označiť.

The nájsť_všetko metóda na druhej strane vyhľadá všetky značky s potrebným názvom značky a vráti ich ako zoznam typu bs4.element.Sada výsledkov. Všetky položky v zozname sú typu bs4.element.Značka, aby sme mohli indexovať zoznam a pokračovať v našom výskume krásnej polievky.

Pozrime sa na nejaký kód. Nájdeme všetky značky div:

polievka.nájsť („div“)

Dostali by sme nasledujúci výsledok:

Názov:Dr. Peter Parker

Pri kontrole premennej html by ste si všimli, že ide o prvú značku div.

polievka.find_all („div“)

Dostali by sme nasledujúci výsledok:

[
Názov:Dr. Peter Parker
,
Práca:Inžinier strojového učenia
,
Telefón:+12345678910
,
,
Webová stránka:
pparkerworks.com
]

Vráti zoznam.  Ak napríklad chcete tretiu značku div, spustíte nasledujúci kód:

polievka.find_all („div“) [2]

Vrátilo by nasledujúce:

Telefón:+12345678910

NAJDETE ATRIBUTY NAŠICH OBĽÚBENÝCH ZNAČIEK

Teraz, keď sme videli, ako získať naše obľúbené značky, čo tak získať ich atribúty?

Možno si v tejto chvíli myslíte: „Na čo potrebujeme atribúty?„. Mnohokrát, väčšina údajov, ktoré potrebujeme, budú e-mailové adresy a webové stránky. Tento druh údajov je zvyčajne hypertextový odkaz na webové stránky, s odkazmi v atribúte „href“.

Keď sme extrahovali potrebnú značku pomocou metód find alebo find_all, môžeme získať atribúty aplikáciou attrs. Takto by sa vrátil slovník atribútu a jeho hodnoty.

Napríklad aby sme dostali atribút email, dostaneme značky, ktoré obklopujú potrebné informácie, a vykonajte nasledujúce.

polievka.find_all („a“) [0].attrs

Ktorý by vrátil nasledujúci výsledok:

'href': 'mailto: [e-mail chránený]'

To isté pre atribút webovej stránky.

polievka.find_all („a“) [1].attrs

Ktorý by vrátil nasledujúci výsledok:

'href': '
http: // pparkerworks.com'

Vrátené hodnoty sú slovníky a na získanie kľúčov a hodnôt je možné použiť normálnu syntax slovníka.

Pozrime sa na RODIČA A DETI

Všade sú štítky. Niekedy by sme chceli vedieť, čo sú podradené značky a čo je nadradená značka.

Ak ešte neviete, čo je rodičovská a podradená značka, malo by stačiť toto krátke vysvetlenie: rodičovská značka je okamžitá vonkajšia značka a dieťa je okamžitá vnútorná značka príslušnej značky.

Keď sa pozrieme na náš html, značka body je nadradenou značkou všetkých značiek div. Tučná značka a značka ukotvenia sú potomkami značiek div, ak je to vhodné, pretože nie všetky značky div majú značky kotvy.

Takže môžeme získať prístup k rodičovskej značke volaním nájsťParent metóda.

polievka.nájsť („div“).findParent ()

Takto by sa vrátila celá značka tela:


Názov:Dr. Peter Parker

Práca:Inžinier strojového učenia

Telefón:+12345678910


Webová stránka:
pparkerworks.com

Aby sme dostali značku detí štvrtej značky div, nazývame ju nájsť deti metóda:

polievka.find_all ("div") [4].findChildren ()

Vráti nasledovné:

[Webová stránka:, pparkerworks.com]

Čo pre nás obsahuje?

Pri prehliadaní webových stránok nevidíme značky všade na obrazovke. Všetko, čo vidíme, je obsah rôznych značiek. Čo ak chceme obsah štítku bez toho, aby nám všetky hranaté zátvorky znepríjemňovali život? To nie je ťažké, jediné, čo by sme museli urobiť, je zavolať get_text metóda na tag podľa výberu a dostaneme text do tagu a ak má tag v sebe ďalšie tagy, dostane aj ich textové hodnoty.

Tu je príklad:

polievka.nájsť („telo“).get_text ()

Týmto sa vrátia všetky textové hodnoty v značke body:

Meno: Dr. Peter Parker
Práca: Inžinier strojového učenia
Telefón: +12345678910
E-mail: [chránený e-mailom]
Webové stránky: pparkerworks.com

ZÁVER

To je to, čo pre tento článok máme. S krásnou polievkou sa však dajú urobiť ešte ďalšie zaujímavé veci. Môžete si pozrieť dokumentáciu alebo použiť dir (BeautfulSoup) na interaktívnom shelli zobrazíte zoznam operácií, ktoré je možné vykonať s objektom BeautifulSoup. To je odo mňa dnes všetko, kým znova nenapíšem.

Hry Najlepšie linuxové distribúcie pre hry v roku 2021
Najlepšie linuxové distribúcie pre hry v roku 2021
Operačný systém Linux prešiel dlhou cestou od svojho originálneho, jednoduchého serverového vzhľadu. Tento OS sa za posledné roky nesmierne vylepšil a...
Hry Ako zachytiť a streamovať vašu hernú reláciu v systéme Linux
Ako zachytiť a streamovať vašu hernú reláciu v systéme Linux
V minulosti sa hranie hier považovalo iba za hobby, ale časom došlo v hernom priemysle k obrovskému nárastu z hľadiska technológie i počtu hráčov. Her...
Hry Najlepšie hry na hranie s ručným sledovaním
Najlepšie hry na hranie s ručným sledovaním
Oculus Quest nedávno predstavil skvelú myšlienku ručného sledovania bez ovládačov. Vďaka stále sa zvyšujúcemu počtu hier a aktivít, ktoré vykonávajú p...