Lesere som deg er med på å støtte MUO. Når du foretar et kjøp ved å bruke lenker på nettstedet vårt, kan vi tjene en tilknyttet provisjon. Les mer.

Vil du lære nettskraping med Python, men er i tvil om du skal bruke Beautiful Soup, Selen eller Scrapy til ditt neste prosjekt? Selv om alle disse Python-bibliotekene og -rammeverket er kraftige i seg selv, passer de ikke alle nettskrapingbehov, og derfor er det viktig å vite hvilket verktøy du bør bruke for en bestemt jobb.

La oss ta en titt på forskjellene mellom Beautiful Soup, Scrapy og Selen, slik at du kan ta en klok avgjørelse før du starter ditt neste Python-nettskrapingprosjekt.

1. Brukervennlighet

Hvis du er nybegynner, vil ditt første krav være et bibliotek som er enkelt å lære og bruke. Beautiful Soup tilbyr deg alle de rudimentære verktøyene du trenger for å skrape nettet, og det er spesielt nyttig for folk som har minimal erfaring med Python, men som ønsker å komme i gang med web skraping.

Det eneste forbeholdet er at Beautiful Soup på grunn av sin enkelhet ikke er like kraftig sammenlignet med Scrapy eller Selen. Programmerere med utviklingserfaring kan enkelt mestre både Scrapy og Selenium, men for nybegynnere det første prosjektet kan ta mye tid å bygge hvis de velger å gå med disse rammene i stedet for Beautiful Suppe.

For å skrape titteltag-innholdet på example.com ved å bruke Beautiful Soup, bruker du følgende kode:

url = "https://example.com/"
res = requests.get (url).text
suppe = vakker suppe (res, 'html.parser')
tittel = suppe.finn("tittel").tekst
skrive ut(tittel)

For å oppnå lignende resultater ved å bruke selen, vil du skrive:

url = "https://example.com"
driver = webdriver. Chrome("bane/til/chromedriver")
sjåfør.få(url)
title = driver.find_element (av. TAG_NAME, "tittel").get_attribute('tekst')
skrive ut(tittel)

Filstrukturen til et Scrapy-prosjekt består av flere filer, noe som øker kompleksiteten. Følgende kode skraper tittelen fra example.com:

import skrapete

klasseTitteledderkopp(skrapete. Edderkopp):
navn = 'tittel'
start_urls = ['https://example.com']

defanalysere(selv, svar):
utbytte {
'Navn': response.css('tittel'),
}

Hvis du ønsker å trekke ut data fra en tjeneste som tilbyr en offisiell API, kan det være en klok avgjørelse å gjøre det bruk API i stedet for å utvikle en nettskraper.

2. Skrapehastighet og parallellisering

Av de tre er Scrapy den klare vinneren når det kommer til fart. Dette er fordi den støtter parallellisering som standard. Ved å bruke Scrapy kan du sende flere HTTP-forespørsler samtidig, og når skriptet har lastet ned HTML-koden for det første settet med forespørsler, er det klart til å sende en ny batch.

Med Beautiful Soup kan du bruke threading-biblioteket til å sende samtidige HTTP-forespørsler, men det er ikke praktisk, og du må lære multithreading for å gjøre det. På Selenium er det umulig å oppnå parallellisering uten å starte flere nettleserforekomster.

Hvis du skulle rangere disse tre verktøyene for nettskraping når det gjelder hastighet, er Scrapy den raskeste, etterfulgt av Beautiful Soup og Selenium.

3. Minnebruk

Selenium er et nettleserautomatiserings-API, som har funnet sine applikasjoner i feltet for nettskraping. Når du bruker Selenium til å skrape et nettsted, skaper det en hodeløs nettleserforekomst som kjører i bakgrunnen. Dette gjør Selen til et ressurskrevende verktøy sammenlignet med Beautiful Soup and Scrapy.

Siden sistnevnte opererer helt på kommandolinjen, bruker de færre systemressurser og tilbyr bedre ytelse enn Selenium.

4. Avhengighetskrav

Beautiful Soup er en samling av analyseverktøy som hjelper deg å trekke ut data fra HTML- og XML-filer. Den sendes med ingenting annet. Du må bruke biblioteker som forespørsler eller urllib å lage HTTP-forespørsler, innebygde parsere for å analysere HTML/XML, og tilleggsbiblioteker for å implementere proxyer eller databasestøtte.

Scrapy, derimot, kommer med hele shebang. Du får verktøy for å sende forespørsler, analysere den nedlastede koden, utføre operasjoner på de utpakkede dataene og lagre den skrapte informasjonen. Du kan legge til andre funksjoner til Scrapy ved å bruke utvidelser og mellomvare, men det kommer senere.

Med Selenium laster du ned en nettdriver for nettleseren du vil automatisere. For å implementere andre funksjoner som datalagring og proxy-støtte, trenger du tredjepartsmoduler.

5. Dokumentasjonskvalitet

Samlet sett er hver av prosjektets dokumentasjon godt strukturert og beskriver hver metode ved hjelp av eksempler. Men effektiviteten til et prosjekts dokumentasjon avhenger også sterkt av leseren.

Beautiful Soups dokumentasjon er mye bedre for nybegynnere som begynner med nettskraping. Selen og Scrapy har utvilsomt detaljert dokumentasjon, men den tekniske sjargongen kan fange mange nykommere.

Hvis du har erfaring med programmeringskonsepter og terminologier, vil en av de tre dokumentasjonen være en enkel sak å lese gjennom.

6. Støtte for utvidelser og mellomvare

Scrapy er det mest utvidbare Python-rammeverket for nettskraping, punktum. Den støtter mellomvare, utvidelser, proxyer og mer, og hjelper deg med å utvikle en crawler for store prosjekter.

Du kan skrive idiotsikre og effektive crawlere ved å implementere mellomvare i Scrapy, som i utgangspunktet er kroker som legger til tilpasset funksjonalitet til rammeverkets standardmekanisme. For eksempel tar HttpErrorMiddleware seg av HTTP-feil slik at edderkoppene ikke trenger å håndtere dem mens de behandler forespørsler.

Mellomvare og utvidelser er eksklusive for Scrapy, men du kan oppnå lignende resultater med Beautiful Soup og Selenium ved å bruke flere Python-biblioteker.

7. JavaScript-gjengivelse

Selenium har ett brukstilfelle der det overgår andre nettskrapingsbiblioteker, og det vil si å skrape JavaScript-aktiverte nettsteder. Selv om du kan skrape JavaScript-elementer ved hjelp av Scrapy-mellomvare, er Selenium-arbeidsflyten den enkleste og mest praktiske av alle.

Du bruker en nettleser til å laste et nettsted, samhandle med det ved å klikke og trykke på knapper, og når du har innholdet du trenger for å skrape på skjermen, pakke det ut med Seleniums CSS og XPath velgere.

Beautiful Soup kan velge HTML-elementer ved å bruke enten XPath- eller CSS-velgere. Det tilbyr imidlertid ikke funksjonalitet for å skrape JavaScript-gjengitte elementer på en nettside.

Nettskraping gjort enkelt med Python

Internett er fullt av rådata. Nettskraping hjelper til med å konvertere disse dataene til meningsfull informasjon som kan brukes godt. Selen er sannsynligvis det sikreste alternativet hvis du vil skrape et nettsted med JavaScript eller trenger å utløse noen elementer på skjermen før du trekker ut dataene.

Scrapy er et fullverdig nettskraping-rammeverk for alle dine behov, enten du vil skrive en liten crawler eller en storskala scraper som gjentatte ganger gjennomsøker internett for oppdaterte data.

Du kan bruke Beautiful Soup hvis du er nybegynner eller trenger å raskt utvikle en skrape. Uansett hvilket rammeverk eller bibliotek du bruker, er det enkelt å begynne å lære nettskraping med Python.