Vacker soppa

Python BeautifulSoup-handledning för nybörjare

Python BeautifulSoup-handledning för nybörjare
Webbskrapning är av stor betydelse i dagens värld. Alla behöver data, från olika källor inklusive webbsidor. I den här artikeln kommer vi att titta på hur man analyserar html med det vackra soppbiblioteket. Att extrahera nödvändiga data ur ett gäng alfabet och symboler har tack vare detta fantastiska bibliotek blivit mycket enklare. BeautifulSoup skrivet i Python kan enkelt installeras på din dator med Pythons pipinstallationsverktyg. Följande kommando skulle hjälpa till att installera biblioteket:

pip installera BeautifulSoup4

För att kontrollera om installationen lyckades aktiverar du det interaktiva Python-skalet och importerar BeautifulSoup. Om inget fel dyker upp betyder det att allt gick bra.  Om du inte vet hur du ska göra det, skriv följande kommandon 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" för mer information.
>>> importera bs4

För att arbeta med BeautifulSoup-biblioteket måste du skicka in html. När du arbetar med riktiga webbplatser kan du hämta html för en webbsida med hjälp av biblioteket för förfrågningar. Installationen och användningen av förfrågningsbiblioteket ligger utanför ramen för den här artikeln, men du kan hitta din väg runt dokumentationen, det är ganska enkelt att använda. För den här artikeln kommer vi helt enkelt att använda html i en pythonsträng som vi skulle kalla html.

html = "" "

Anställdsprofil



Namn:Dr Peter Parker

Jobb:Machine Learning Engineer

Telefon:+12345678910





"" "

För att använda beautifulsoup importerar vi den till koden med koden nedan:

från bs4 importera BeautifulSoup

Detta skulle introducera BeautifulSoup i vårt namnutrymme och vi kan använda det för att analysera vår sträng.

soppa = BeautifulSoup (html, "lxml")

Nu, soppa är ett BeautifulSoup-objekt av typen bs4.BeautifulSoup och vi kan utföra alla BeautifulSoup-operationer på soppavariabel.

Låt oss ta en titt på några saker vi kan göra med BeautifulSoup nu.

GÖR DET FULLA, VACKRA

När BeautifulSoup tolkar html är det vanligtvis inte i det bästa formatet. Avståndet är ganska hemskt. Taggarna är svåra att hitta. Här är en bild som visar hur de skulle se ut när du skriver ut soppa:

Det finns dock en lösning på detta. Lösningen ger html perfekt avstånd, vilket gör att saker ser bra ut. Denna lösning kallas välförtjänt ”försköna“.

Visserligen kanske du inte får använda den här funktionen för det mesta; men det finns tillfällen då du kanske inte har tillgång till verktyget för inspektionselement i en webbläsare. Under de tider med begränsade resurser skulle prettify-metoden vara mycket användbar.

Så här använder du det:

soppa.försköna()

Markeringen skulle se ordentligt ut, precis som i bilden nedan:

När du använder prettify-metoden på soppan är resultatet inte längre en typ bs4.Vacker soppa. Resultatet är nu typ 'unicode'. Det betyder att du inte kan använda andra BeautifulSoup-metoder på den, men själva soppan påverkas inte så vi är säkra.

HITTA VÅRA FAVORITTAGGAR

HTML består av taggar. Den lagrar all sin data i dem, och mitt i allt det röran ligger den data vi behöver. I grund och botten betyder det att när vi hittar rätt taggar kan vi få det vi behöver.

Så hur hittar vi rätt taggar? Vi använder BeautifulSoups hitta och hitta_ alla metoder.

Så här fungerar de:

De hitta metoden söker efter den första taggen med det nödvändiga namnet och returnerar ett objekt av typen bs4.element.Märka.

De hitta alla metod å andra sidan, söker efter alla taggar med det nödvändiga taggnamnet och returnerar dem som en lista av typen bs4.element.Resultatet satt. Alla objekt i listan är av typen bs4.element.Tagga, så att vi kan utföra indexering på listan och fortsätta vår vackra söksuppsökning.

Låt oss se lite kod. Låt oss hitta alla div-taggar:

soppa.hitta (“div”)

Vi skulle få följande resultat:

Namn:Dr Peter Parker

När du kontrollerar html-variabeln märker du att detta är den första div-taggen.

soppa.find_all ("div")

Vi skulle få följande resultat:

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

Den returnerar en lista.  Om du till exempel vill ha den tredje div-taggen, kör du följande kod:

soppa.find_all (“div“) [2]

Det skulle returnera följande:

Telefon:+12345678910

HITTA ATTRIBUTERNA AV VÅRA FAVORITTTAGGAR

Nu när vi har sett hur vi kan få våra favorittaggar, vad sägs om att få deras attribut?

Du kanske tänker vid den här tiden: ”Vad behöver vi attribut för?“. Många gånger kommer de flesta uppgifter vi behöver vara e-postadresser och webbplatser. Denna typ av data är vanligtvis hyperlänkade på webbsidor, med länkarna i attributet "href".

När vi har extraherat den tagg som behövs med hjälp av metoden find eller find_all kan vi få attribut genom att använda attrs. Detta skulle returnera en ordlista med attributet och dess värde.

För att få e-postattributet till exempel får vi taggar som omger nödvändig information och gör följande.

soppa.find_all (“a“) [0].attrs

Vilket skulle ge följande resultat:

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

Samma sak för webbplatsattributet.

soppa.find_all (“a”) [1].attrs

Vilket skulle ge följande resultat:

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

De returnerade värdena är ordböcker och normal ordbokssyntax kan användas för att få nycklarna och värdena.

Låt oss se föräldrarna och barnen

Det finns taggar överallt. Ibland vill vi veta vad barnmärken är och vad föräldramärket är.

Om du inte redan vet vad en förälder och en underordnad tagg är, bör den här korta förklaringen räcka: en överordnad tagg är den omedelbara yttre taggen och ett barn är den omedelbara inre taggen för den aktuella taggen.

Om vi ​​tittar på vår html är body-taggen den överordnade taggen för alla div-taggar. Dessutom är den djärva taggen och ankartaggen barnen till div-taggarna, där så är tillämpligt eftersom inte alla div-taggar har ankartaggar.

Så vi kan komma åt den överordnade taggen genom att ringa findParent metod.

soppa.hitta ("div").findParent ()

Detta skulle returnera hela body taggen:


Namn:Dr Peter Parker

Jobb:Machine Learning Engineer

Telefon:+12345678910



För att få barnmärket för den fjärde div-taggen kallar vi findChildren metod:

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

Den returnerar följande:

[Hemsida:, pparkerworks.com]

VAD ÄR DET FÖR OSS??

När vi surfar på webbsidor ser vi inte taggar överallt på skärmen. Allt vi ser är innehållet i de olika taggarna. Vad händer om vi vill ha innehållet i en tagg, utan att alla vinkelfästen gör livet obekvämt? Det är inte svårt, allt vi skulle göra är att ringa get_text metod på taggen du väljer och vi får texten i taggen och om taggen har andra taggar får den också deras textvärden.

Här är ett exempel:

soppa.hitta ("kropp").get_text ()

Detta returnerar alla textvärden i body-taggen:

Namn: Dr Peter Parker
Jobb: Machine Learning Engineer
Telefon: +12345678910
E-post: [e-postskyddad]
Webbplats: pparkerworks.com

SLUTSATS

Det är vad vi har för den här artikeln. Det finns dock fortfarande andra intressanta saker som kan göras med vacker soppa. Du kan antingen kolla in dokumentationen eller använda dir (BeautfulSoup) på det interaktiva skalet för att se listan över operationer som kan utföras på ett BeautifulSoup-objekt. Det är allt från mig idag tills jag skriver igen.

Installera det senaste OpenRA-strategispelet på Ubuntu Linux
OpenRA är en Libre / Free Real Time Strategy-spelmotor som återskapar de tidiga Westwood-spelen som det klassiska Command & Conquer: Red Alert. Distri...
Installera senaste Dolphin Emulator för Gamecube & Wii på Linux
Dolphin Emulator låter dig spela dina valda Gamecube & Wii-spel på Linux Personal Computers (PC). Eftersom Dolphin Emulator är en fritt tillgänglig o...
Hur man använder GameConqueror Cheat Engine i Linux
Artikeln täcker en guide om hur du använder GameConqueror-fuskmotorn i Linux. Många användare som spelar spel på Windows använder ofta applikationen "...