Läsare som du hjälper till att stödja MUO. När du gör ett köp med hjälp av länkar på vår webbplats kan vi tjäna en affiliate-provision. Läs mer.

Vill du lära dig webbskrapa med Python men är förvirrad över om du ska använda Beautiful Soup, Selen eller Scrapy för ditt nästa projekt? Även om alla dessa Python-bibliotek och ramverk är kraftfulla i sig, tillgodoser de inte alla webbskrapningsbehov, och därför är det viktigt att veta vilket verktyg du ska använda för en viss jobb.

Låt oss ta en titt på skillnaderna mellan Beautiful Soup, Scrapy och Selen, så att du kan fatta ett klokt beslut innan du startar ditt nästa Python-webskrapningsprojekt.

1. Enkel användning

Om du är nybörjare skulle ditt första krav vara ett bibliotek som är lätt att lära sig och använda. Beautiful Soup erbjuder dig alla rudimentära verktyg du behöver för att skrapa webben, och det är speciellt användbart för personer som har minimal erfarenhet av Python men vill komma igång med webben skrapning.

Den enda varningen är att Beautiful Soup på grund av sin enkelhet inte är lika kraftfull jämfört med Scrapy eller Selen. Programmerare med erfarenhet av utveckling kan enkelt bemästra både Scrapy och Selenium, men för nybörjare kan Det första projektet kan ta mycket tid att bygga om de väljer att använda dessa ramverk istället för Beautiful Soppa.

instagram viewer

För att skrapa titeltaggens innehåll på example.com med Beautiful Soup, skulle du använda följande kod:

url = "https://example.com/"
res = requests.get (url).text
soppa = vacker soppa (res, 'html.parser')
title = soup.find("titel").text
skriva ut(titel)

För att uppnå liknande resultat med Selen skulle du skriva:

url = "https://example.com"
drivrutin = webbdrivrutin. Krom("sökväg/till/chromedrivrutin")
förare.skaffa sig(url)
title = driver.find_element (Av. TAG_NAME, "titel").get_attribute('text')
skriva ut(titel)

Filstrukturen för ett Scrapy-projekt består av flera filer, vilket ökar dess komplexitet. Följande kod skrapar titeln från example.com:

importera skrapigt

klassTitelSpider(skrapigt. Spindel):
namn = 'titel'
start_urls = ['https://example.com']

defanalysera(själv, svar):
avkastning {
'namn': response.css('titel'),
}

Om du vill extrahera data från en tjänst som erbjuder ett officiellt API kan det vara ett klokt beslut att använd API: et istället för att utveckla en webbskrapa.

2. Skraphastighet och parallellisering

Av de tre är Scrapy den klara vinnaren när det kommer till hastighet. Detta beror på att den stöder parallellisering som standard. Med Scrapy kan du skicka flera HTTP-förfrågningar samtidigt, och när skriptet har laddat ner HTML-koden för den första uppsättningen av förfrågningar är det redo att skicka ytterligare en batch.

Med Beautiful Soup kan du använda threading-biblioteket för att skicka samtidiga HTTP-förfrågningar, men det är inte bekvämt och du måste lära dig multithreading för att göra det. På Selenium är det omöjligt att uppnå parallellisering utan att starta flera webbläsarinstanser.

Om du skulle rangordna dessa tre webbskrapningsverktyg när det gäller hastighet, är Scrapy snabbast, följt av Beautiful Soup och Selen.

3. Minnesanvändning

Selenium är ett webbläsarautomations-API som har hittat sina applikationer i webbskrapningsfältet. När du använder Selenium för att skrapa en webbplats skapar det en huvudlös webbläsarinstans som körs i bakgrunden. Detta gör Selen till ett resurskrävande verktyg jämfört med Beautiful Soup and Scrapy.

Eftersom de senare fungerar helt på kommandoraden använder de färre systemresurser och erbjuder bättre prestanda än Selenium.

4. Beroendekrav

Beautiful Soup är en samling analysverktyg som hjälper dig att extrahera data från HTML- och XML-filer. Den levereras med inget annat. Du måste använda bibliotek som förfrågningar eller urllib för att göra HTTP-förfrågningar, inbyggda tolkar för att analysera HTML/XML och ytterligare bibliotek för att implementera proxyservrar eller databasstöd.

Scrapy, å andra sidan, kommer med hela shebang. Du får verktyg för att skicka förfrågningar, analysera den nedladdade koden, utföra operationer på den extraherade informationen och lagra den skrapade informationen. Du kan lägga till andra funktioner till Scrapy med tillägg och mellanprogram, men det skulle komma senare.

Med Selenium laddar du ner en webbdrivrutin för webbläsaren du vill automatisera. För att implementera andra funktioner som datalagring och proxystöd, skulle du behöva tredjepartsmoduler.

5. Dokumentationskvalitet

Sammantaget är varje projektdokumentation välstrukturerad och beskriver varje metod med hjälp av exempel. Men effektiviteten av ett projekts dokumentation beror också mycket på läsaren.

Beautiful Soups dokumentation är mycket bättre för nybörjare som börjar med webbskrapning. Selen och Scrapy har detaljerad dokumentation, utan tvekan, men den tekniska jargongen kan fånga många nykomlingar.

Om du har erfarenhet av programmeringskoncept och terminologier, skulle någon av de tre dokumentationerna vara lätta att läsa igenom.

6. Stöd för tillägg och mellanprogram

Scrapy är det mest utbyggbara Python-ramverket för webbskrapning, punkt. Den stöder mellanprogram, tillägg, proxyservrar och mer och hjälper dig att utveckla en sökrobot för storskaliga projekt.

Du kan skriva idiotsäkra och effektiva sökrobotar genom att implementera mellanprogram i Scrapy, som i grunden är krokar som lägger till anpassad funktionalitet till ramverkets standardmekanism. Till exempel tar HttpErrorMiddleware hand om HTTP-fel så att spindlarna inte behöver ta itu med dem när de behandlar förfrågningar.

Mellanprogram och tillägg är exklusiva för Scrapy men du kan uppnå liknande resultat med Beautiful Soup och Selenium genom att använda ytterligare Python-bibliotek.

7. JavaScript-rendering

Selen har ett användningsfall där det överträffar andra webbskrapningsbibliotek, och det vill säga skrapa JavaScript-aktiverade webbplatser. Även om du kan skrapa JavaScript-element med Scrapy-mellanvaror, är Selen-arbetsflödet det enklaste och bekvämaste av allt.

Du använder en webbläsare för att ladda en webbplats, interagera med den med klick och knapptryckningar, och när du har innehållet du behöver för att skrapa på skärmen, extrahera det med Seleniums CSS och XPath väljare.

Beautiful Soup kan välja HTML-element med antingen XPath- eller CSS-väljare. Det erbjuder dock inte funktionalitet för att skrapa JavaScript-renderade element på en webbsida.

Webskrapning på ett enkelt sätt med Python

Internet är fullt av rådata. Webbskrapning hjälper till att omvandla dessa data till meningsfull information som kan användas på bästa sätt. Selen är förmodligen din säkraste insats om du vill skrapa en webbplats med JavaScript eller behöver trigga några element på skärmen innan du extraherar data.

Scrapy är ett fullfjädrat ramverk för webbskrapning för alla dina behov, oavsett om du vill skriva en liten sökrobot eller en storskalig skrapa som upprepade gånger genomsöker internet efter uppdaterad data.

Du kan använda Beautiful Soup om du är nybörjare eller snabbt behöver utveckla en skrapa. Oavsett vilket ramverk eller bibliotek du använder är det lätt att börja lära sig webbskrapa med Python.