Brug af hovedløse browsere i webskrabning og dataudtræk

0
Brug af hovedløse browsere i webskrabning og dataudtræk

Hvis du er involveret i en hvilken som helst form for webdataekstraktionsprojekt, har du sikkert hørt om hovedløse browsere. Måske undrer du dig over, hvad de er, og om du skal bruge dem. Her vil jeg gerne tackle et par grundlæggende spørgsmål om hovedløse browsere og hvordan de bruges.

Lad os starte med at se på, hvad der sker, når du får adgang til en webside i sammenhæng med, hvordan de fleste scraping-rammer fungerer.

For at læse denne blog bruger du næsten helt sikkert en slags webbrowser på din computer eller mobilenhed. I bund og grund er en browser et stykke software, der gengiver en webside til visning på en målenhed. Det gør kode sendt fra serveren til noget, der kan læses på din skærm, med tekst og billeder prydet af smukke skrifttyper, pop-ups, animationer og alle de andre smukke ting. Hvad mere er, giver browseren dig også mulighed for at interagere med indholdet på siden ved at klikke, rulle, svæve og stryge.

Det er din computer, der faktisk udfører æselarbejdet med at rendere, noget der typisk involverer hundredvis af HTTP-anmodninger, der sendes af browseren til serveren. Din browser vil først anmode om det oprindelige “rå” HTML-sideindhold. Derefter sender den en række yderligere anmodninger til serveren om yderligere elementer som stylesheets og billeder.

I de tidlige dage af internettet var websteder udelukkende bygget på HTML og CSS. Nu er de designet til at give en meget rigere, mere interaktiv brugeroplevelse. Og det betyder, at moderne websteder ofte er stærkt afhængige af JavaScript, der gengiver alt det smukke indhold i næsten realtid til fordel for seeren. Du kan se, hvad der sker, når et websted indlæses langsomt over en træg internetforbindelse. Bare-bones elementer på siden vises først. Et par sekunder senere gengives kedelig tekst igen i smarte brugerdefinerede skrifttyper, og andre elementer af visuel tinsel dukker op, mens JavaScript gør sit.

De fleste websteder tilbyder i disse dage også en form for sporingskode, brugeranalysekode, kode til sociale medier og utallige andre ting. Browseren skal downloade al denne information, beslutte, hvad der skal gøres med den, og faktisk gengive den.

Lad os nu sige, at du vil skrive et skrabescript for at automatisere processen med at udtrække data for nogle websteder. På dette tidspunkt kan du godt tænke dig, om du skal bruge en form for browser for at opnå dette. Lad os sige, at du skriver en kode for at sammenligne produktpriser på en række forskellige online markedspladser. Prisen for en bestemt vare er muligvis ikke engang indeholdt i den rå HTML-kode til produktsiden. Det eksisterer ikke som et synligt element på den side, før det er blevet gengivet af en JavaScript-kode, som udføres af klienten – dvs. den browser, der har lavet sideanmodningen til serveren.

For at udtrække information i stor skala fra tusinder eller endda millioner af websider, har du helt sikkert brug for en form for automatiseret løsning. Det er uoverkommeligt tidskrævende og dyrt at ansætte et værelse fyldt med mennesker, sætte dem foran masser af computere og skrive noter ned om, hvad de kan se på skærmen. Det er, hvad hovedløse browsere er der for. Og hvad handler ‘hovedløs’ i øvrigt om? Dette betyder ganske enkelt, at browseren ikke er under kontrol af en menneskelig operatør, der interagerer med målstedet via en grafisk grænseflade og musebevægelser.

I stedet for at bruge mennesker til at interagere med og kopiere information fra et websted, skriver du blot noget kode, der fortæller den hovedløse browser, hvor den skal gå hen, og hvad den skal hente fra en side. På denne måde kan du få en side gengivet automatisk og få de oplysninger, du har brug for. Der er flere programmatiske grænseflader til browsere derude – de mest populære er Puppeteer, Playwright og Selenium. De udfører alle et stort set lignende job, og lader dig skrive en kode, der fortæller browseren at besøge en side, klikke på et link, klikke på en knap, holde musemarkøren over et billede og tage et skærmbillede af, hvad den ser.

Men er det virkelig den bedste måde at skrabe på? Svaret er ikke altid et klart ja eller nej – men oftere et tilfælde af ‘det afhænger’.

De fleste populære skraberammeværker bruger ikke hovedløse browsere under motorhjelmen. Det skyldes, at hovedløse browsere ikke er den mest effektive måde at få dine oplysninger på i de fleste tilfælde.

Lad os sige, at du bare vil udtrække teksten fra denne artikel, du læser lige nu. For at se det på skærmen skal en browser lave hundredvis af anmodninger. Men hvis du prøver at lave en anmodning til vores URL med et kommandolinjeværktøj som f.eks. cURL, vil du se, at denne tekst faktisk er tilgængelig i det indledende svar. Med andre ord behøver du faktisk ikke at bekymre dig om styling, billeder, brugersporing og knapper på sociale medier for at få den bit, du virkelig er interesseret i, nemlig selve teksten.

Alle disse ting er der til gavn for mennesker og deres interaktion med websteder. Men skrabere er ligeglade med, om der er et eller andet pænt billede på en side. De klikker ikke på delingsknapper på sociale medier – medmindre de har deres sociale botnetværk, men AI er ikke helt så avanceret endnu. Skraberen vil bare se rå HTML-kode: dette er ikke let for mennesker at læse, men det er ganske tilstrækkeligt for en maskine. Og det er faktisk alt, hvad dit program skal bruge, hvis det bare er på jagt efter dette blogindlæg.

I mange tilfælde er det langt mere effektivt bare at lave en anmodning til én URL uden at gengive hele siden med en hovedløs browser. I stedet for at lave hundrede anmodninger om ting, dit program ikke har brug for – som billeder og stylesheets – beder du bare om kritiske bidder af relevant information. Alligevel kan der være tilfælde, hvor du har brug for en hovedløs browser.

Når det er sagt, er der i stigende grad behov for gengivelse og interaktion med en rigtig browser for at imødegå antibot-systemer. Selvom disse teknologier hovedsageligt bruges til at afskrække dårlige aktører fra at angribe og potentielt udnytte sårbarheder på et websted, kan antibots også blokere legitime brugere. I andre brugssager, såsom kvalitetssikring, skal du faktisk simulere en rigtig bruger: det er faktisk hele formålet med QA, omend med automatisering, der kommer i spil for at opnå dette konsekvent og i skala. Her taler vi om handlinger som at klikke på en login-knap, tilføje varer til en indkøbskurv og gå gennem sider.

Selvom din indsats for dataudvinding ikke har brug for hovedløse browsere lige nu, er det stadig værd at lære dem bedre at kende. Hvis du er en udvikler, har dine egne crawlere og har brug for et smart proxy-netværk for at få dem i gang i stor skala, så gå videre til vores hovedløse browserdokumenter og prøv at skrive nogle programmer med dem. På samme måde, hvis du er til de nye og skinnende ting, så læs denne artikel af vores chef for R&D, Akshay Philar.

Ähnliche Beiträge

Leave a Reply