Hur man installerar vacker soppa och använder den för webbskrapningsprojekt?

I dagens datadrivna värld är den traditionella metoden för manuell datainsamling föråldrad. En dator med internetuppkoppling på varje skrivbord gjorde webben till en enorm datakälla. Den mer effektiva och tidsbesparande moderna metoden för datainsamling är alltså webbskrapning. Och när det kommer till webbskrapning har Python ett verktyg som heter Beautiful Soup. I det här inlägget kommer jag att leda dig genom installationsstegen för Beautiful Soup för att komma igång med webbskrapning.

Innan du installerar och arbetar med Beautiful Soup, låt oss ta reda på varför du bör gå för det.

Vad är en vacker soppa?

Låt oss låtsas att du undersöker ”COVID:s inverkan på människors hälsa” och har hittat några webbsidor som innehåller relevant data. Men vad händer om de inte erbjuder dig ett nedladdningsalternativ med ett klick för att låna deras data? Här kommer den vackra soppan till spel.

Beautiful Soup är ett av Python-bibliotekens index för att dra ut data från riktade webbplatser. Det är bekvämare att hämta data från HTML- eller XML-sidor.

Leonard Richardson tog fram idén om Beautiful Soup för att skrapa webben fram i ljuset 2004. Men hans bidrag till projektet fortsätter till detta idag. Han uppdaterar stolt varje Beautiful Soups nya release på sitt Twitter-konto.

Även om Beautiful Soup for web scraping utvecklades med Python 3.8, fungerar den perfekt med både Python 3 och Python 2.4 också.

Ofta använder webbplatser captcha-skydd för att rädda sina data från AI-verktyg. I det här fallet kan några ändringar i ”user-agent”-huvudet i Beautiful Soup eller använda Captcha-lösnings-API:er efterlikna en pålitlig webbläsare och lura upptäcktsverktyget.

Men om du inte har tid att utforska Beautiful Soup eller vill att skrapningen ska göras effektivt och smidigt, bör du inte missa att kolla in detta webbskrapnings-API, där du bara kan ange en URL och hämta data i dina händer.

Om du redan är en programmerare kommer det inte att vara skrämmande att använda Beautiful Soup för att skrapa på grund av dess enkla syntax för att navigera på webbsidor och extrahera önskad data baserat på villkorlig analys. Samtidigt är det nybörjarvänligt också.

Även om Beautiful Soup inte är för avancerad skrapning, fungerar det bäst att skrapa data från filer skrivna på märkningsspråk.

Tydlig och detaljerad dokumentation är en annan brownie-punkt som Beautiful Soup packade.

Låt oss hitta ett enkelt sätt att få in vacker soppa i din maskin.

Hur man installerar vacker soppa för webbskrapning?

Pip – En enkel Python-pakethanterare utvecklad 2008 är nu ett standardverktyg bland utvecklare för att installera alla Python-bibliotek eller beroenden.

Pip kommer som standard med installationen av de senaste Python-versionerna. Således, om du har några senaste Python-versioner installerade på ditt system, är du bra att gå.

Öppna kommandotolken och skriv följande pip-kommando för att installera den vackra soppan direkt.

pip install beautifulsoup4

Du kommer att se något som liknar följande skärmdump på din skärm.

Se till att du har uppdaterat PIP-installationsprogrammet till den senaste versionen för att undvika vanliga fel.

Kommandot för att uppdatera pip-installationsprogrammet till den senaste versionen är:

pip install --upgrade pip

Vi har framgångsrikt täckt halva marken i det här inlägget.

Nu har du Beautiful Soup installerad på din maskin, så låt oss dyka in i hur du använder den för webbskrapning.

Hur importerar och arbetar man med vacker soppa för webbskrapning?

Skriv följande kommando i din python-IDE för att importera vacker Soup till det aktuella python-skriptet.

from bs4 import BeautifulSoup

Nu finns den vackra soppan i din Python-fil för att använda för skrapning.

Låt oss titta på ett kodexempel för att lära oss hur man extraherar önskad data med vacker Soup.

Vi kan säga till vackra Soup att leta efter specifika HTML-taggar på källwebbplatsen och skrapa data som finns i dessa taggar.

I det här stycket kommer jag att använda marketwatch.com, som uppdaterar aktiekurserna i realtid för olika företag. Låt oss ta fram lite data från den här webbplatsen för att bekanta dig med biblioteket Beautiful Soup.

Importera ”requests”-paket som gör att vi kan ta emot och svara på HTTP-förfrågningar och ”urllib” för att ladda webbsidan från dess URL.

from urllib.request import urlopen
import requests

Spara webbsideslänken i en variabel så att du enkelt kan komma åt den senare.

url="https://www.marketwatch.com/investing/stock/amzn"

Nästa skulle vara att använda ”urlopen” -metoden från ”urllib”-biblioteket för att lagra HTML-sidan i en variabel. Skicka URL:en till funktionen ”urlopen” och spara resultatet i en variabel.

page = urlopen(url)

Skapa ett Beautiful Soup-objekt och analysera den önskade webbsidan med ”html.parser”.

soup_obj = BeautifulSoup(page, 'html.parser')

Nu lagras hela HTML-skriptet för den riktade webbsidan i variabeln ’soup_obj’.

Innan vi fortsätter, låt oss titta på den riktade sidans källkod för att veta mer om HTML-skriptet och -taggarna.

Högerklicka var som helst på webbsidan med musen. Då hittar du ett inspektionsalternativ, som visas nedan.

Klicka på inspektera för att se källkoden.

I ovanstående källkod kan du hitta taggar, klasser och mer specifik information om varje element som är synligt på webbplatsens gränssnitt.

”Sök”-metoden i vackra Soup låter oss söka efter de begärda HTML-taggarna och hämta data. För att göra detta ger vi klassens namn och taggar till metoden som extraherar specifik data.

Till exempel ”Amazon.com Inc.” som visas på webbsidan har klassnamnet: ’company__name’ taggat under ’h1’. Vi kan mata in denna information i ’hitta’-metoden för att extrahera det relevanta HTML-kodavsnittet till en variabel.

name = soup_obj.find('h1', attrs={'class': 'company__name'})

Låt oss mata ut HTML-skriptet lagrat i variabeln ”namn” och den önskade texten på skärmen.

print(name)

print(name.text)

Du kan se de extraherade uppgifterna utskrivna på skärmen.

Webb Skrapa IMDb-webbplatsen

Många av oss letar efter filmbetyg på IMBbs webbplats innan vi tittar på en film. Den här demonstrationen ger dig en lista över topprankade filmer och hjälper dig att vänja dig vid den vackra soppan för webbskrapning.

Steg 1: Importera den vackra soppan och begär bibliotek.

from bs4 import BeautifulSoup
import requests

Steg 2: Låt oss tilldela webbadressen vi vill skrapa till en variabel som heter ’url’ för enkel åtkomst i koden.

Paketet ”requests” används för att hämta HTML-sidan från URL:en.

url = requests.get('https://www.imdb.com/search/title/?count=100&groups=top_1000&sort=user_rating')

Steg 3: I följande kodavsnitt kommer vi att analysera HTML-sidan för den aktuella URL:en för att skapa ett objekt av vacker Soup.

soup_obj = BeautifulSoup(url.text, 'html.parser')

Variabeln ”soup_obj” innehåller nu hela HTML-skriptet för den önskade webbsidan, som i följande bild.

Låt oss inspektera webbsidans källkod för att hitta HTML-skriptet för de data vi vill skrapa.

Håll muspekaren över webbsideselementet som du vill extrahera. Högerklicka sedan på den och gå med inspekteringsalternativet för att se källkoden för det specifika elementet. Följande bilder kommer att guida dig bättre.

Klassens lister-lista innehåller alla topprankade filmrelaterade data som underavdelningar i på varandra följande div-taggar.

I varje filmkorts HTML-skript, under klassen ’lister-item mode-advanced’, har vi en tagg ’h3’ som lagrar filmens namn, rang och releaseår, som markerats i bilden nedan.

Obs: ”Sök”-metoden i vacker Soup söker efter den första taggen som matchar inmatningsnamnet som den har fått. Till skillnad från ”hitta” letar metoden ”finn_allt” efter alla taggar som matchar den givna inmatningen.

Steg 4: Du kan använda metoderna ”hitta” och ”hitta_allt” för att spara HTML-skriptet för varje films namn, rankning och år i en listvariabel.

top_movies = soup_obj.find('div',attrs={'class': 'lister-list'}).find_all('h3')

Steg 5: Bläddra igenom listan över filmer som lagras i variabeln: ”top_movies” och extrahera namnet, rangen och året för varje film i textformat från dess HTML-skript med koden nedan.

for movie in top_movies:
    movi_name = movie.a.text
    rank = movie.span.text.rstrip('.')
    year = movie.find('span', attrs={'class': 'lister-item-year text-muted unbold'})
    year = year.text.strip('()')
    print(movi_name + " ", rank+ " ", year+ " ")

I skärmdumpen kan du se listan över filmer med deras namn, rang och släppår.

Du kan enkelt flytta den utskrivna informationen till ett excelark med lite pythonkod och använda den för din analys.

Slutord

Det här inlägget guidar dig i att installera vacker Soup för webbskrapning. Dessutom bör de skrapningsexempel jag har visat hjälpa dig att komma igång med Beautiful Soup.

Eftersom du är intresserad av hur du installerar Beautiful Soup för webbskrapning, rekommenderar jag starkt att du kollar in den här begripliga guiden för att veta mer om webbskrapning med Python.