Python BeautifulSoup Tutorial for nybegynnere

Python BeautifulSoup Tutorial 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 du kan analysere HTML med Beautiful Soup Library. Å trekke ut nødvendige data fra en haug med 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 vil bidra til å få biblioteket installert:
Pip installer BeautifulSoup4

For å sjekke om installasjonen var vellykket, aktiverer du Python Interactive Shell og importerer BeautifeSoup. Hvis ingen feil dukker opp, 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 "Hjelp", "Copyright", "Credits" eller "License" for mer informasjon.
>>> Importer BS4

For å jobbe med BeautifulSoup -biblioteket, må du passere i HTML. Når du jobber med ekte nettsteder, kan du få HTML på en webside ved hjelp av Requests -biblioteket. Installasjon og bruk 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 ganske enkelt bruke HTML i en Python -streng som vi vil ringe html.

html = "" "

Ansattes profil



Navn:Dr Peter Parker
Jobb:Machine Learning Engineer
Telefon:+12345678910
E -post:
[email protected]

Nettsted:
Pparkerworks.com



"" "

For å bruke BeautifulSoup importerer vi den til koden ved å bruke koden nedenfor:

fra BS4 import BeautifulSoup

Dette vil introdusere Beautifulesuppen i navneområdet vårt, og vi kan bruke den til å analysere strengen vår.

suppe = BeautifulSoup (HTML, "LXML")

Nå, suppe er et Beautiful -objekt av type BS4.BeautifulSoup og vi kan få utføre alle de vakre operasjonene på suppevariabel.

La oss se på noen ting vi kan gjøre med Beautifules nå.

Gjør det stygge, vakker

Når Beautifuling Parses HTML, er det vanligvis ikke i de beste formatene. Avstanden er ganske fryktelig. Taggene er vanskelige å finne. Her er et bilde for å vise hvordan de vil se ut når du får skrive ut suppe:

Imidlertid er det en løsning på dette. Løsningen gir HTML den perfekte avstanden, og får ting til å se bra ut. Denne løsningen kalles fortjent "Prettify“.

Riktignok kan det hende du ikke får bruke denne funksjonen mesteparten av tiden; Imidlertid er det tider hvor du kanskje ikke har tilgang til inspektørverktøyet i en nettleser. I de tider med begrensede ressurser vil du finne Prettify -metoden veldig nyttig.

Slik bruker du det:

suppe.Prettify ()

Markupen ville se ordentlig fordelt, akkurat som på bildet nedenfor:

Når du bruker Prettify -metoden på suppen, er resultatet ikke lenger en type BS4.BeautifulSoup. Resultatet er nå type 'Unicode'. Dette betyr at du ikke kan bruke andre Beautiful -metoder på den, men selve suppen er ikke påvirket, så vi er trygge.

Finne favorittkodene våre

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

Så hvordan finner vi de riktige taggene? Vi benytter oss av BeautifulSoups Find and Find_all -metoder.

Slik fungerer de:

De finne Metodesøk etter den første taggen med det nødvendige navnet og returnerer et objekt av type BS4.element.stikkord.

De find_all Metode på den annen side, søker etter alle tagger med det nødvendige tagnavnet og returnerer dem som en liste over type BS4.element.Resultatet. Alle elementene i listen er av type BS4.element.Tag, slik at vi kan utføre indeksering på listen og fortsette vår Beautiful -leting.

La oss se litt kode. La oss finne alle Div -tagger:

suppe.Finn (“Div”)

Vi vil få følgende resultat:

Navn:Dr Peter Parker

Kontroller HTML -variabelen, vil du legge merke til at dette er den første div -taggen.

suppe.find_all (“Div”)

Vi vil få følgende resultat:

[
Navn:Dr Peter Parker,
Jobb:Machine Learning Engineer,
Telefon:+12345678910,
E -post:
[email protected]
,
Nettsted:
Pparkerworks.com
]

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

suppe.find_all (“div”) [2]

Det ville returnere følgende:

Telefon:+12345678910

Finne attributtene til våre favorittmerker

Nå som vi har sett hvordan vi kan få favorittkodene våre, hva med å få attributtene sine?

Du tenker kanskje på dette tidspunktet: “Hva trenger vi attributter for?“. Vel, mange ganger, de fleste dataene vi trenger vil være e -postadresser og nettsteder. Denne typen data er vanligvis hyperkoblet på websider, med koblingene i "Href" -attributtet.

Når vi har trukket ut den nødvendige taggen, ved hjelp av find- eller find_all -metodene, kan vi få attributter ved å bruke attrs. Dette ville returnere en ordbok om attributtet og det er verdien.

For å få e -postattributtet for eksempel, får vi taggene som omgir den nødvendige informasjonen og gjør følgende.

suppe.find_all (“A“) [0].attrs

Som ville returnere følgende resultat:

'Href': 'Mailto: [email protected] '

Samme ting for nettstedsattributtet.

suppe.find_all (“A“) [1].attrs

Som ville returnere følgende resultat:

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

De returnerte verdiene er ordbøker og normal ordbokssyntaks kan brukes for å få tastene og verdiene.

La oss se foreldrene og barna

Det er tagger overalt. Noen ganger vil vi vite hva barna tagger er og hva foreldremerket er.

Hvis du ikke allerede vet hva en foreldre- og barns tag er, skal denne korte forklaringen være tilstrekkelig: en overordnede tag er den umiddelbare ytre taggen og et barn er den umiddelbare indre taggen til det aktuelle taggen.

Ta en titt på HTML -. Også den dristige taggen og ankerkoden er barna til Div -tagene, der det er aktuelt som ikke alle DIV -tagger har ankerkoder.

Så vi kan få tilgang til overordnede taggen ved å ringe FindParent metode.

suppe.Finn ("Div").findParent ()

Dette ville returnere hele kroppskoden:


Navn:Dr Peter Parker
Jobb:Machine Learning Engineer
Telefon:+12345678910
E -post:
[email protected]

Nettsted:
Pparkerworks.com

For å få barna -taggen til den fjerde div -taggen, kaller vi findbarn metode:

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

Det returnerer følgende:

[Nettsted:, Pparkerworks.com]

Hva er det for oss?

Når vi surfer på websider, ser vi ikke tagger overalt på skjermen. Alt vi ser er innholdet i de forskjellige taggene. Hva om vi vil ha innholdet i en tag, uten at alle vinkelbrakettene gjør livet ubehagelig? Det er ikke vanskelig, alt vi vil gjøre er å ringe get_text Metode på valgtaggen og vi får teksten i taggen, og hvis taggen har andre tagger i seg, får den også tekstverdiene deres.

Her er et eksempel:

suppe.Finn ("Body").get_text ()

Dette returnerer alle tekstverdiene i kroppskoden:

Navn: Dr Peter Parker
Jobb: Machine Learning Engineer
Telefon: +12345678910
E -post: [email protected]
Nettsted: PParkerworks.com

KONKLUSJON

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