Vakker suppe

Python BeautifulSoup-opplæring for nybegynnere

Python BeautifulSoup-opplæring for nybegynnere
Nettskraping er av stor betydning i dagens verden. Alle trenger data, fra forskjellige kilder, inkludert websider. I denne artikkelen vil vi se på hvordan man analyserer html med det vakre soppebiblioteket. Å hente ut nødvendige data fra en rekke alfabeter og symboler, takket være dette flotte biblioteket, har blitt mye enklere. BeautifulSoup skrevet i Python kan enkelt installeres på maskinen din ved hjelp av Pythons pip-installasjonsverktøy. Følgende kommando kan hjelpe til med å installere biblioteket:

pip installer BeautifulSoup4

For å sjekke om installasjonen var vellykket, aktiverer du det interaktive Python-skallet og importerer BeautifulSoup. Hvis det ikke vises noen feil, betyr det at alt gikk bra.  Hvis du ikke vet hvordan du skal gjøre det, skriver du inn følgende kommandoer i terminalen din.

$ python
Python 3.5.2 (standard, 14. september 2017, 22:51:06)
[GCC 5.4.0 20160609] på linux
Skriv inn "help", "copyright", "credits" eller "lisens" for mer informasjon.
>>> importer bs4

For å jobbe med BeautifulSoup-biblioteket, må du passere i html. Når du arbeider med ekte nettsteder, kan du få HTML-en til en webside ved hjelp av forespørselsbiblioteket. Installasjonen og bruken av forespørselsbiblioteket er utenfor omfanget av denne artikkelen, men du kan finne veien rundt dokumentasjonen, det er ganske enkelt å bruke. For denne artikkelen skal vi bare bruke html i en pythonstreng som vi vil kalle html.

html = "" "

Ansattes profil



Navn:Dr Peter Parker

Jobb:Machine Learning Engineer

Telefon:+12345678910





"" "

For å bruke vakker suppe importerer vi den til koden ved hjelp av koden nedenfor:

fra bs4 import BeautifulSoup

Dette vil introdusere BeautifulSoup i vårt navneområde, og vi kan bruke den til å analysere strengen.

suppe = BeautifulSoup (html, "lxml")

Nå, suppe er et BeautifulSoup-objekt av typen bs4.BeautifulSoup, og vi kan utføre alle BeautifulSoup-operasjonene på suppevariabel.

La oss ta en titt på noen ting vi kan gjøre med BeautifulSoup nå.

Å LAGE DET STREKE, VAKKER

Når BeautifulSoup analyserer html, er det vanligvis ikke det beste av formatene. Avstanden er ganske fryktelig. Merkelappene er vanskelige å finne. Her er et bilde for å vise hvordan de vil se ut når du skal skrive ut suppe:

Det er imidlertid en løsning på dette. Løsningen gir html den perfekte avstanden, slik at ting ser bra ut. Denne løsningen kalles fortjent “prettify“.

Riktignok får du kanskje ikke brukt denne funksjonen mesteparten av tiden; men det er tider når du kanskje ikke har tilgang til inspeksjonselementverktøyet i en nettleser. I de tider med begrensede ressurser, vil du finne prettify-metoden veldig nyttig.

Slik bruker du det:

suppe.prettify ()

Markeringen vil se riktig ut, som på bildet nedenfor:

Når du bruker prettify-metoden på suppen, er resultatet ikke lenger en type bs4.Vakker suppe. Resultatet er nå typen 'unicode'. Dette betyr at du ikke kan bruke andre BeautifulSoup-metoder på den, men selve suppen påvirkes ikke, så vi er trygge.

Å finne våre favorittmerker

HTML består av koder. Den lagrer alle dataene i dem, og midt i alt rotet ligger dataene vi trenger. I utgangspunktet betyr dette at når vi finner de riktige kodene, kan vi få det vi trenger.

Så hvordan finner vi de riktige kodene? Vi bruker BeautifulSoups find and find_all-metoder.

Slik fungerer de:

De finne metoden søker etter den første koden med det nødvendige navnet og returnerer et objekt av typen bs4.element.stikkord.

De find_all metode, derimot, søker etter alle koder med det nødvendige kodenavnet og returnerer dem som en liste av typen bs4.element.ResultatSett. Alle elementene i listen er av typen bs4.element.Merk, slik at vi kan utføre indeksering på listen og fortsette den vakre utforskningen vår.

La oss se litt kode. La oss finne alle div-kodene:

suppe.finn (“div”)

Vi ville få følgende resultat:

Navn:Dr Peter Parker

Når du sjekker html-variabelen, vil du merke at dette er den første div-koden.

suppe.find_all (“div“)

Vi ville få følgende resultat:

[
Navn:Dr Peter Parker
,
Jobb:Machine Learning Engineer
,
Telefon:+12345678910
,
,
]

Den returnerer en liste.  Hvis du for eksempel vil ha den tredje div-koden, kjører du følgende kode:

suppe.find_all (“div“) [2]

Det ville returnere følgende:

Telefon:+12345678910

Å FINNE ATTRIBUTENE TIL VÅRE FAVORITTE MERKER

Nå som vi har sett hvordan vi får tak i favorittkodene våre, hva med å få attributtene deres?

Du tenker kanskje på dette punktet: “Hva trenger vi attributter til?“. Mange ganger vil de fleste dataene vi trenger være e-postadresser og nettsteder. Denne typen data blir vanligvis hyperkoblet på nettsider, med lenkene i "href" -attributtet.

Når vi har hentet ut den nødvendige koden, ved hjelp av find eller find_all-metodene, kan vi få attributter ved å bruke attr. Dette vil returnere en ordbok med attributtet og dens verdi.

For å få e-postattributtet for eksempel får vi tagger som omgir nødvendig informasjon og gjør følgende.

suppe.find_all (“a“) [0].attr

Som vil gi følgende resultat:

'href': 'mailto: [email protected]'

Samme for nettstedsattributtet.

suppe.find_all (“a“) [1].attr

Som vil gi følgende resultat:

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

De returnerte verdiene er ordbøker og normal ordbokssyntaks kan brukes for å hente nøklene og verdiene.

La oss se foreldrene og barna

Det er tagger overalt. Noen ganger vil vi vite hva barnemerkene er og hva foreldemerket er.

Hvis du ikke allerede vet hva en foreldre- og barnemerke er, bør denne korte forklaringen være tilstrekkelig: en foreldrekode er den umiddelbare ytre koden, og et barn er den umiddelbare indre koden til den aktuelle koden.

Når vi tar en titt på html-en vår, er body tag den overordnede taggen til alle div-taggene. Også den fet skrift og ankeretiketten er barna til div-kodene, der det er aktuelt da ikke alle div-tagger har ankermerker.

Så vi kan få tilgang til foreldrekoden ved å ringe findParent metode.

suppe.finn ("div").findParent ()

Dette ville returnere hele kroppskoden:


Navn:Dr Peter Parker

Jobb:Machine Learning Engineer

Telefon:+12345678910



For å få barnemerket til den fjerde div-koden, kaller vi findBarn metode:

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

Den returnerer følgende:

[Nettsted:, pparkerworks.com]

HVA ER I DET FOR OSS?

Når du surfer på websider, ser vi ikke koder overalt på skjermen. Alt vi ser er innholdet i de forskjellige kodene. Hva om vi vil ha innholdet i en tag, uten at alle kantete parenteser gjør livet ubehagelig? Det er ikke vanskelig, alt vi vil gjøre er å ringe get_text metode på den valgte koden, og vi får teksten i koden, og hvis koden har andre koder, får den også tekstverdiene.

Her er et eksempel:

suppe.finn ("kropp").get_text ()

Dette returnerer alle tekstverdiene i brødteksten:

Navn: Dr Peter Parker
Jobb: Machine Learning Engineer
Telefon: +12345678910
E-post: [e-postbeskyttet]
Nettsted: pparkerworks.com

KONKLUSJON

Det er det vi har for denne artikkelen. Imidlertid er det fortsatt andre interessante ting som kan gjøres med vakker suppe. Du kan enten sjekke ut dokumentasjonen eller bruke dir (BeautfulSoup) på det interaktive skallet for å se listen over operasjoner som kan utføres på et BeautifulSoup-objekt. Det er alt fra meg i dag, til jeg skriver igjen.

Beste Linux Distros for spill i 2021
Linux-operativsystemet har kommet langt fra det originale, enkle, serverbaserte utseendet. Dette operativsystemet har forbedret seg enormt de siste år...
Hvordan fange opp og streame spilløkten din på Linux
Tidligere ble spill bare ansett som en hobby, men med tiden så spillindustrien en enorm vekst når det gjelder teknologi og antall spillere. Spillpubli...
Beste spill å spille med håndsporing
Oculus Quest introduserte nylig den gode ideen om håndsporing uten kontrollere. Med et stadig økende antall spill og aktiviteter som utfører støtte en...