Smuk suppe

Python BeautifulSoup-tutorial til begyndere

Python BeautifulSoup-tutorial til begyndere
Webskrabning er af stor betydning i nutidens verden. Alle har brug for data fra forskellige kilder inklusive websider. I denne artikel vil vi se på, hvordan man analyserer html med det smukke soppebibliotek. Det er blevet meget lettere at udtrække nødvendige data ud af en masse alfabeter og symboler takket være dette fantastiske bibliotek. BeautifulSoup skrevet i Python kan let installeres på din maskine ved hjælp af Pythons pip-installationsværktøj. Følgende kommando hjælper med at få biblioteket installeret:

pip installer BeautifulSoup4

For at kontrollere, om installationen var vellykket, skal du aktivere den interaktive Python-skal og importere BeautifulSoup. Hvis der ikke vises nogen fejl, betyder det, at alt gik fint.  Hvis du ikke ved, hvordan du skal gøre det, skal du skrive følgende kommandoer i din terminal.

$ python
Python 3.5.2 (standard, 14. september 2017, 22:51:06)
[GCC 5.4.0 20160609] på Linux
Skriv "hjælp", "copyright", "credits" eller "licens" for at få flere oplysninger.
>>> import bs4

For at arbejde med BeautifulSoup-biblioteket skal du videregive i html. Når du arbejder med ægte websteder, kan du hente html på en webside ved hjælp af anmodningsbiblioteket. Installation og brug af anmodningsbiblioteket ligger uden for denne artikels anvendelsesområde, men du kan finde vej rundt i dokumentationen, det er ret nemt at bruge. Til denne artikel vil vi simpelthen bruge html i en pythonstreng, som vi kalder html.

html = "" "

Medarbejderprofil



Navn:Dr Peter Parker

Job:Machine Learning Engineer

Telefon:+12345678910


Internet side:
pparkerworks.com



"" "

For at bruge beautifulsoup importerer vi det til koden ved hjælp af nedenstående kode:

fra bs4 import BeautifulSoup

Dette ville introducere BeautifulSoup i vores navneområde, og vi kan få det til at analysere vores streng.

suppe = BeautifulSoup (html, "lxml")

Nu, suppe er et BeautifulSoup-objekt af typen bs4.BeautifulSoup, og vi kan udføre alle BeautifulSoup-operationer på suppevariabel.

Lad os se på nogle ting, vi kan gøre med BeautifulSoup nu.

GØR DET GLÆDE, SMUKT

Når BeautifulSoup analyserer html, er det normalt ikke i de bedste formater. Afstanden er temmelig forfærdelig. Mærkerne er svære at finde. Her er et billede, der viser, hvordan de ser ud, når du kommer til at udskrive suppe:

Der er dog en løsning på dette. Løsningen giver html den perfekte afstand, hvilket får tingene til at se godt ud. Denne løsning kaldes fortjent ”prettify“.

Ganske vist får du muligvis ikke brugt denne funktion det meste af tiden; dog er der tidspunkter, hvor du muligvis ikke har adgang til inspektionselementværktøjet i en webbrowser. I disse tider med begrænsede ressourcer vil du finde prettify-metoden meget nyttig.

Sådan bruger du det:

suppe.prettify ()

Markeringen ser korrekt ud, ligesom i billedet nedenfor:

Når du anvender prettify-metoden på suppen, er resultatet ikke længere en type bs4.Smuk suppe. Resultatet er nu 'unicode'. Dette betyder, at du ikke kan anvende andre BeautifulSoup-metoder på den, men selve suppen påvirkes ikke, så vi er sikre.

FIND VORES FAVORITTAG

HTML består af tags. Den gemmer alle dens data i dem, og midt i alt det rod ligger de data, vi har brug for. Dybest set betyder det, at når vi finder de rigtige tags, kan vi få det, vi har brug for.

Så hvordan finder vi de rigtige tags? Vi bruger BeautifulSoup's find and find_all-metoder.

Sådan fungerer de:

Det finde metode søger efter det første tag med det nødvendige navn og returnerer et objekt af typen bs4.element.Tag.

Det find_all metode søger på den anden side efter alle tags med det nødvendige tagnavn og returnerer dem som en liste af typen bs4.element.ResultSet. Alle elementerne på listen er af typen bs4.element.Tag, så vi kan udføre indeksering på listen og fortsætte vores smukke søgeudforskning.

Lad os se noget kode. Lad os finde alle div-tags:

suppe.find (“div“)

Vi ville få følgende resultat:

Navn:Dr Peter Parker

Når du kontrollerer html-variablen, vil du bemærke, at dette er det første div-tag.

suppe.find_all (“div“)

Vi ville få følgende resultat:

[
Navn:Dr Peter Parker
,
Job:Machine Learning Engineer
,
Telefon:+12345678910
,
,
Internet side:
pparkerworks.com
]

Den returnerer en liste.  Hvis du f.eks. Vil have det tredje div-tag, kører du følgende kode:

suppe.find_all (“div“) [2]

Det ville returnere følgende:

Telefon:+12345678910

AT FINDE ATRIVNINGERNE AF VORES FAVORITTE TAGS

Nu hvor vi har set, hvordan vi får vores yndlingsmærker, hvad med at få deres attributter?

Du tænker måske på dette tidspunkt: ”Hvad har vi brug for attributter til?“. Mange gange vil de fleste af de data, vi har brug for, være e-mail-adresser og websteder. Denne type data hyperlinkes normalt på websider med linkene i attributten "href".

Når vi har trukket det nødvendige mærke ud ved hjælp af find eller find_all-metoderne, kan vi få attributter ved at anvende attrs. Dette returnerer en ordbog med attributten og dens værdi.

For at få e-mail-attributten for eksempel får vi tags, der omgiver den nødvendige information, og gør følgende.

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

Hvilket ville returnere følgende resultat:

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

Den samme ting for webstedets attribut.

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

Hvilket ville returnere følgende resultat:

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

De returnerede værdier er ordbøger, og normal ordboksyntaks kan anvendes for at hente nøglerne og værdierne.

Lad os se forældrene og børnene

Der er tags overalt. Nogle gange vil vi vide, hvad børnemærkerne er, og hvad forældermærket er.

Hvis du ikke allerede ved, hvad en forælder og et barn-tag er, skal denne korte forklaring være tilstrækkelig: et overordnet tag er det umiddelbare ydre tag, og et barn er det umiddelbare indre tag for det pågældende tag.

Når vi kigger på vores html, er body tag det overordnede tag for alle div-tags. Også det fede tag og ankermærket er børn af div-tags, hvor det er relevant, da ikke alle div-tags har anker tags.

Så vi kan få adgang til det overordnede mærke ved at ringe til findParent metode.

suppe.find ("div").findParent ()

Dette ville returnere hele body tag:


Navn:Dr Peter Parker

Job:Machine Learning Engineer

Telefon:+12345678910


Internet side:
pparkerworks.com

For at få børnemærket til det fjerde div-mærke kalder vi findBørn metode:

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

Det returnerer følgende:

[Internet side:, pparkerworks.com]

HVAD ER DET FOR OS?

Når du gennemsøger websider, ser vi ikke tags overalt på skærmen. Alt, hvad vi ser, er indholdet af de forskellige tags. Hvad hvis vi vil have indholdet af et tag, uden at alle kantede parenteser gør livet ubehageligt? Det er ikke svært, alt hvad vi ville gøre er at ringe get_text metode på det valgte tag, og vi får teksten i tagget, og hvis tagget har andre tags, får det også deres tekstværdier.

Her er et eksempel:

suppe.find ("krop").get_text ()

Dette returnerer alle tekstværdierne i brødteksten:

Navn: Dr Peter Parker
Job: Machine Learning Engineer
Telefon: +12345678910
E-mail: [email protected]
Websted: pparkerworks.com

KONKLUSION

Det er hvad vi har til denne artikel. Der er dog stadig andre interessante ting, der kan gøres med smuksuppe. Du kan enten tjekke dokumentationen eller bruge den dir (BeautfulSoup) på den interaktive skal for at se listen over operationer, der kan udføres på et BeautifulSoup-objekt. Det er alt fra mig i dag, indtil jeg skriver igen.

Gratis og open source-spilmotorer til udvikling af Linux-spil
Denne artikel dækker en liste over gratis og open source-spilmotorer, der kan bruges til at udvikle 2D- og 3D-spil på Linux. Der er mange sådanne spil...
Shadow of the Tomb Raider til Linux-vejledning
Shadow of the Tomb Raider er den tolvte tilføjelse til Tomb Raider-serien - en action-adventure-spilfranchise oprettet af Eidos Montreal. Spillet blev...
Sådan styrkes FPS i Linux?
FPS står for Billeder i sekundet. FPS's opgave er at måle billedhastigheden i videoafspilninger eller spiloptræden. I enkle ord betegnes antallet af u...