Læsere som dig hjælper med at støtte MUO. Når du foretager et køb ved hjælp af links på vores websted, kan vi optjene en affiliate-kommission. Læs mere.

Vil du lære web-skrabning med Python, men er i tvivl om, hvorvidt du skal bruge Beautiful Soup, Selen eller Scrapy til dit næste projekt? Selvom alle disse Python-biblioteker og -frameworks er kraftfulde i deres egen ret, passer de ikke til det alle webskrabningsbehov, og derfor er det vigtigt at vide, hvilket værktøj du skal bruge til en bestemt job.

Lad os tage et kig på forskellene mellem Smuk suppe, Scrapy og Selen, så du kan træffe en klog beslutning, før du starter dit næste Python-webskrabningsprojekt.

1. Brugervenlighed

Hvis du er nybegynder, vil dit første krav være et bibliotek, der er nemt at lære og bruge. Beautiful Soup tilbyder dig alle de rudimentære værktøjer, du har brug for til at skrabe nettet, og det er især nyttigt for folk, der har minimal erfaring med Python, men ønsker at komme i gang med internettet skrabning.

Den eneste advarsel er, på grund af sin enkelhed, Beautiful Soup er ikke så kraftfuld sammenlignet med Scrapy eller Selen. Programmører med udviklingserfaring kan nemt mestre både Scrapy og Selenium, men for begyndere er det det første projekt kan tage meget tid at bygge, hvis de vælger at gå med disse rammer i stedet for Beautiful Suppe.

instagram viewer

For at skrabe titeltag-indholdet på example.com ved hjælp af Beautiful Soup, skal du bruge følgende kode:

url = "https://example.com/"
res = requests.get (url).text
suppe = smuk suppe (res, 'html.parser')
titel = suppe.find("titel").tekst
Print(titel)

For at opnå lignende resultater ved at bruge selen, skal du skrive:

url = "https://example.com"
driver = webdriver. Chrome("sti/til/chromedriver")
chauffør.få(url)
title = driver.find_element (Af. TAG_NAME, "titel").get_attribute('tekst')
Print(titel)

Filstrukturen i et Scrapy-projekt består af flere filer, hvilket øger dets kompleksitet. Følgende kode skraber titlen fra example.com:

importere skrabet

klasseTitel Spider(skrabet. Edderkop):
navn = 'titel'
start_urls = ['https://example.com']

defparse(selv, svar):
udbytte {
'navn': response.css('titel'),
}

Hvis du ønsker at udtrække data fra en tjeneste, der tilbyder en officiel API, kan det være en klog beslutning at gøre det bruge API'et i stedet for at udvikle en webskraber.

2. Skrabehastighed og parallellisering

Ud af de tre er Scrapy den klare vinder, når det kommer til fart. Dette er fordi det understøtter parallelisering som standard. Ved hjælp af Scrapy kan du sende flere HTTP-anmodninger på én gang, og når scriptet har downloadet HTML-koden til det første sæt anmodninger, er det klar til at sende endnu en batch.

Med Beautiful Soup kan du bruge threading-biblioteket til at sende samtidige HTTP-anmodninger, men det er ikke praktisk, og du bliver nødt til at lære multithreading for at gøre det. På Selenium er det umuligt at opnå parallelisering uden at starte flere browserforekomster.

Hvis du skulle rangere disse tre webskrabeværktøjer med hensyn til hastighed, er Scrapy den hurtigste, efterfulgt af Smuk suppe og selen.

3. Hukommelsesbrug

Selenium er en browser automation API, som har fundet sine applikationer i web-skrabefeltet. Når du bruger Selenium til at skrabe et websted, afføder det en hovedløs browserforekomst, der kører i baggrunden. Dette gør selen til et ressourcekrævende værktøj sammenlignet med smuk suppe og skrabet.

Da sidstnævnte udelukkende fungerer på kommandolinjen, bruger de færre systemressourcer og tilbyder bedre ydeevne end Selenium.

4. Afhængighedskrav

Beautiful Soup er en samling af analyseværktøjer, der hjælper dig med at udtrække data fra HTML- og XML-filer. Den sendes med intet andet. Du skal bruge biblioteker som f.eks anmodninger eller urllib at lave HTTP-anmodninger, indbyggede parsere til at parse HTML/XML og yderligere biblioteker til at implementere proxyer eller databaseunderstøttelse.

Scrapy, på den anden side, kommer med hele shebang. Du får værktøjer til at sende anmodninger, parse den downloadede kode, udføre operationer på de udtrukne data og gemme de skrabet oplysninger. Du kan tilføje andre funktioner til Scrapy ved hjælp af udvidelser og middleware, men det ville komme senere.

Med Selenium downloader du en webdriver til den browser, du vil automatisere. For at implementere andre funktioner som datalagring og proxy-support skal du bruge tredjepartsmoduler.

5. Dokumentationskvalitet

Samlet set er hver af projektets dokumentation velstruktureret og beskriver hver metode ved hjælp af eksempler. Men effektiviteten af ​​et projekts dokumentation afhænger også i høj grad af læseren.

Beautiful Soups dokumentation er meget bedre for begyndere, der starter med web-skrabning. Selen og Scrapy har uden tvivl detaljeret dokumentation, men den tekniske jargon kan fange mange nybegyndere.

Hvis du har erfaring med programmeringskoncepter og terminologier, så ville en af ​​de tre dokumentationer være en lette at læse igennem.

6. Support til udvidelser og middleware

Scrapy er den mest udvidelige Python-ramme til webskrabning, punktum. Det understøtter middleware, udvidelser, proxyer og mere og hjælper dig med at udvikle en crawler til store projekter.

Du kan skrive idiotsikre og effektive crawlere ved at implementere middlewares i Scrapy, som dybest set er hooks, der tilføjer brugerdefineret funktionalitet til frameworkets standardmekanisme. For eksempel tager HttpErrorMiddleware sig af HTTP-fejl, så edderkopperne ikke behøver at håndtere dem, mens de behandler anmodninger.

Middleware og udvidelser er eksklusive for Scrapy, men du kan opnå lignende resultater med Beautiful Soup og Selen ved at bruge yderligere Python-biblioteker.

7. JavaScript-gengivelse

Selenium har én use case, hvor det overgår andre web-skrabebiblioteker, og det vil sige, at skrabe JavaScript-aktiverede websteder. Selvom du kan skrabe JavaScript-elementer ved hjælp af Scrapy middlewares, er Selen-arbejdsgangen den nemmeste og mest bekvemme af alle.

Du bruger en browser til at indlæse et websted, interagere med det ved hjælp af klik og knaptryk, og hvornår du har det indhold, du skal bruge til at skrabe på skærmen, udtræk det ved hjælp af Seleniums CSS og XPath vælgere.

Beautiful Soup kan vælge HTML-elementer ved hjælp af enten XPath- eller CSS-vælgere. Det tilbyder dog ikke funktionalitet til at skrabe JavaScript-renderede elementer på en webside.

Webskrabning gjort let med Python

Internettet er fyldt med rå data. Web-skrabning hjælper med at konvertere disse data til meningsfuld information, der kan bruges godt. Selen er højst sandsynligt dit sikreste bud, hvis du vil skrabe et websted med JavaScript eller har brug for at udløse nogle elementer på skærmen, før du udtrækker dataene.

Scrapy er en fuldgyldig web-skraberamme til alle dine behov, uanset om du vil skrive en lille crawler eller en storskala-skraber, der gentagne gange gennemsøger internettet for opdaterede data.

Du kan bruge Smuk suppe, hvis du er nybegynder eller hurtigt skal udvikle en skraber. Uanset hvilken ramme eller et bibliotek du bruger, er det nemt at begynde at lære web-skrabning med Python.