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.
$ pythonPython 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 = "" "[e-postskyddad]
pparkerworks.com
"" "
För att använda beautifulsoup importerar vi den till koden med koden nedan:
från bs4 importera BeautifulSoupDetta 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:
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:
[[e-postskyddad]
pparkerworks.com
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:
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].attrsVilket skulle ge följande resultat:
'href': 'mailto: [email protected]'Samma sak för webbplatsattributet.
soppa.find_all (“a”) [1].attrsVilket 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:
[e-postskyddad]
pparkerworks.com
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 ParkerJobb: 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.