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.
$ pythonPython 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 = "" "[chránené e-mailom]
pparkerworks.com
„“ „
Ak chcete použiť beautifulsoup, importujeme ich do kódu pomocou kódu uvedeného nižšie:
z importu bs4 BeautifulSoupToto 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:
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:
[[chránené e-mailom]
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:
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].attrsKtorý 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].attrsKtorý 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:
[chránené e-mailom]
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 ParkerPrá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.