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.

Der er flere Python-biblioteker og rammer til at udtrække data fra nettet. Alle starter med et bestemt værktøj, indtil de indser, at det måske ikke passer bedst til deres næste projekt. Selvom det er højst usandsynligt, at du vil bruge alle Python-værktøjerne i et enkelt projekt, bør du vide, hvilke du skal have ved hånden i din web-skrabeværktøjskasse.

Her er de bedste Python-biblioteker, rammer og andre værktøjer, der hjælper dig med at skrabe data fra nettet uden besvær.

1. Smuk suppe

Starter listen med det bedste webskrabningsbibliotek for begyndere: Smuk suppe. Det er i bund og grund et værktøj, der udtrækker data fra parsede HTML- og XML-filer ved at transformere dokumentet til et Python-objekt.

"Skønheden" ved Beautiful Soup ligger i dens enkelthed. Det er nemt at sætte op, og du kan komme i gang med dit første web-skrabeprojekt inden for få minutter. Beautiful Soup bruger en hierarkisk tilgang til at udtrække data fra et HTML-dokument. Du kan udtrække elementer ved hjælp af tags, klasser, ID'er, navne og andre HTML-attributter.

instagram viewer

At forvente mere af Beautiful Soup ville dog være at tage det for langt. Der er ingen indbygget understøttelse af middleware og andre avancerede funktioner såsom proxy-rotation eller multi-threading. Med Beautiful Soup har du brug for biblioteker til at sende HTTP-anmodninger, analysere det downloadede dokument og eksportere de skrabede oplysninger til en outputfil.

2. anmodninger

requests er uden tvivl det mest brugte Python-bibliotek til at håndtere HTTP-anmodninger. Værktøjet står op til sin slogan: HTTP for Humans™. Det understøtter flere typer HTTP-anmodninger, lige fra GET og POST til PATCH og DELETE. Ikke kun dette, du kan kontrollere næsten alle aspekter af en anmodning, inklusive overskrifter og svar.

Hvis det lyder nemt, kan du være sikker på, da anmodninger også henvender sig til avancerede brugere med dens mange funktioner. Du kan lege med en anmodning og tilpasse dens overskrifter, uploade en fil til en server ved hjælp af POST og håndtere timeouts, omdirigeringer og sessioner, blandt andet.

requests er normalt forbundet med Beautiful Soup, når det kommer til web-scraping, da andre Python-frameworks har indbygget support til håndtering af HTTP-anmodninger. For at få HTML'en til en webside skal du bruge anmodninger til at sende en GET-anmodning til serveren, derefter udtrække tekstdataene fra svaret og videregive dem til Beautiful Soup.

3. Skrabet

Som navnet antyder, er Scrapy en Python-ramme til udvikling af webskrabere i stor skala. Det er den schweiziske hærkniv til at udtrække data fra nettet. Scrapy håndterer alt fra afsendelse af anmodninger og implementering af proxyer til dataudtræk og eksport.

I modsætning til Beautiful Soup er den sande kraft af Scrapy dens sofistikerede mekanisme. Men lad ikke den kompleksitet skræmme dig. Scrapy er den mest effektive web-skraberamme på denne liste, hvad angår hastighed, effektivitet og funktioner. Den leveres med vælgere, der lader dig vælge data fra et HTML-dokument ved hjælp af XPath- eller CSS-elementer.

En ekstra fordel er den hastighed, hvormed Scrapy sender anmodninger og udtrækker dataene. Det sender og behandler anmodninger asynkront, og det er det, der adskiller det fra andre web-skrabeværktøjer.

Udover de grundlæggende funktioner får du også understøttelse af middlewares, som er en ramme af kroge, der tilfører yderligere funktionalitet til standard Scrapy-mekanismen. Du kan ikke skrabe JavaScript-drevne hjemmesider med Scrapy ud af kassen, men du kan bruge middleware som f.eks. scrapy-selen, scrapy-splash og scrapy-scrapingbee for at implementere denne funktionalitet i dit projekt.

Endelig, når du er færdig med at udpakke dataene, kan du eksportere dem i forskellige filformater; CSV, JSON og XML, for at nævne nogle få.

Scrapy er en af ​​de mange grunde til, at Python er det bedste programmeringssprog for alle, der interesserer sig for web-skrabning. Opsætning af dit første Scrapy-projekt kan tage lidt tid, især hvis du ikke har erfaring med Python klasser og rammer. Scrapys arbejdsgang er adskilt i flere filer, og for begyndere kan det virke som uopfordret kompleksitet.

4. Selen

Hvis du ønsker at skrabe dynamisk, JavaScript-gengivet indhold, så er Selen, hvad du har brug for. Som en webtestramme på tværs af platforme hjælper Selenium dig med at gengive HTML, CSS og JavaScript og udtrække det, der kræves. Du kan også efterligne ægte brugerinteraktioner ved at hardkode tastatur- og mushandlinger, hvilket er en komplet game-changer.

Selen afføder en browserforekomst ved hjælp af webdriveren og indlæser siden. Nogle populære browsere, der understøttes af Selenium, er Google Chrome, Mozilla Firefox, Opera, Microsoft Edge, Apple Safari og Internet Explorer. Den anvender CSS- og XPath-locatorer, der ligner Scrapy-vælgere, til at finde og udtrække indhold fra HTML-elementer på siden.

Hvis du ikke har erfaring med Python, men kender andre programmeringssprog, kan du bruge Selenium med C#, JavaScript, PHP, Perl, Ruby og Java.

Den eneste begrænsning er, da Selenium lancerer en webbrowser i baggrunden, de ressourcer, der kræves for at udføre skraberen, øges markant, i forhold til Scrapy eller Beautiful Soup. Men i betragtning af de ekstra funktioner, Selenium bringer til bordet, er det fuldstændig berettiget.

5. urllib

Python urllib-biblioteket er et simpelt, men vigtigt værktøj at have i dit web-skrabearsenal. Det lader dig håndtere og behandle URL'er i dine Python-scripts.

En passende praktisk anvendelse af urllib er URL-ændring. Overvej, at du skraber et websted med flere sider og skal ændre en del af URL'en for at komme til den næste side.

urllib kan hjælpe dig med at parse URL'en og opdele den i flere dele, som du derefter kan ændre og ophæve for at oprette en ny URL. Mens det at bruge et bibliotek til at parse strenge kan virke som en overkill, er urllib en livredder for folk, der koder webskrabere for sjov og ikke ønsker at komme ind i de små og grove datastrukturer.

Hvis du vil undersøge et websteds robots.txt, som er en tekstfil, der indeholder adgangsregler for Google-crawleren og andre skrabere, kan urllib også hjælpe dig med det. Det anbefales, at du følger et websteds robots.txt og kun skraber de sider, der er tilladt.

6. JSON-, CSV- og XML-biblioteker

Da Beautiful Soup eller Selenium ikke har indbyggede funktioner til at eksportere dataene, skal du bruge et Python-bibliotek for at eksportere dataene til en JSON, CSV eller XML-fil. Heldigvis er der et væld af biblioteker, du kan gøre for at opnå dette, og de mest basale anbefales, nemlig json, csv og xml til henholdsvis JSON-, CSV- og XML-filer.

Sådanne biblioteker giver dig mulighed for at oprette en fil, tilføje data til den og til sidst eksportere filen til dit lokale lager eller fjernserver.

7. Mekanisk suppe

Mekanisk suppe? Er dette en billig smuk suppe ripoff? Nej. Inspireret af Mekanisere og baseret på Python-anmodninger og Beautiful Soup hjælper MechanicalSoup dig med at automatisere menneskelig adfærd og udtrække data fra en webside. Du kan overveje det halvvejs mellem smuk suppe og selen. Den eneste fangst? Den håndterer ikke JavaScript.

Mens navnene ligner hinanden, er MechanicalSoups syntaks og arbejdsgang ekstremt forskellige. Du opretter en browsersession ved hjælp af MechanicalSoup og når siden er downloadet, bruger du Beautiful Soups metoder som f.eks. Find() og find_all() at udtrække data fra HTML-dokumentet.

En anden imponerende funktion ved MechanicalSoup er, at den lader dig udfylde formularer ved hjælp af et script. Dette er især nyttigt, når du skal indtaste noget i et felt (for eksempel en søgelinje) for at komme til den side, du vil skrabe. MechanicalSoups anmodningshåndtering er fantastisk, da den automatisk kan håndtere omdirigeringer og følge links på en side, hvilket sparer dig for besværet med manuelt at kode en sektion for at gøre det.

Da det er baseret på Beautiful Soup, er der et betydeligt overlap i ulemperne ved begge disse biblioteker. For eksempel ingen indbygget metode til at håndtere dataoutput, proxy-rotation og JavaScript-gengivelse. Det eneste Beautiful Soup-problem, MechanicalSoup har afhjulpet, er support til håndtering af anmodninger, som er blevet løst ved at kode en wrapper til Python-anmodningsbiblioteket.

Webskrabning i Python gjort lettere

Python er uden tvivl et kraftfuldt programmeringssprog til at skrabe nettet, men de anvendte værktøjer er kun en del af problemet. Det mest fremtrædende problem, folk står over for, når de koder en skraber, er at lære HTML-dokumenthierarki.

At forstå strukturen af ​​en webside og vide, hvordan man hurtigt finder et element, er et must, hvis du vil udvikle avancerede webskrabere.