Sådan skrabes websted ved hjælp af toadmin.dk Web Scraping API

Webskrabning er en proces til at udtrække nyttige oplysninger fra World Wide Web. Under en google-søgning gennemgår en webcrawler(bot), dvs. crawleren, næsten alt indholdet på nettet og vælger det, der er relevant for dig.

Denne idé om, at information eller viden skulle være tilgængelig for alle, førte til dannelsen af ​​World Wide Web. Dog skal de data, du søger, være tilladt til offentlig brug.

Hvordan er webskrabning nyttigt?

Vi lever i dataens tidsalder. Rådata kan konverteres til nyttig information, som kan bruges til at tjene et større formål ved hjælp af web-skrabning. Det kan bruges til at analysere og studere brugerne af et produkt for at forbedre produktet, med andre ord at skabe en feedback-loop.

E-handelsvirksomheder kan bruge det til at studere konkurrenternes prisstrategier og i overensstemmelse hermed udarbejde deres egne. Webskrabning kan også bruges til vejr- og nyhedsrapportering.

Udfordringer

#1. IP begrænsning

Flere websteder begrænser antallet af anmodninger, du kan foretage for at få webstedets data i et bestemt tidsinterval ved at registrere din IP-adresse eller geolocation. Det gør de for at forhindre ondsindede angreb på deres hjemmeside.

#2. Captcha

At skelne mellem et rigtigt menneske og en bot, der forsøger at få adgang til webstedet, er, hvad captchas faktisk gør. Hjemmesider bruger det til at forhindre spam på hjemmesiden samt til at kontrollere antallet af skrabere på hjemmesiden.

#3. Rendering på klientsiden

Dette er en af ​​de største forhindringer for webskrabere. Moderne websteder bruger frontend-rammer, der er i stand til at skabe enkeltside-applikationer. De fleste enkeltside-applikationer har ikke server-renderet indhold. I stedet genererer de indholdet efter behov ved hjælp af javascript på klientsiden. Dette gør det svært for skrabere at vide, hvad indholdet på en webside er. For at få indholdet skal du gengive noget javascript på klientsiden.

  Produktchef vs projektleder: Hvilken skal man vælge?

toadmin.dk API

En web scraping API løser de fleste af de udfordringer, du står over for, mens du udfører web scraping, fordi den håndterer alt for dig. Lad os udforske toadmin.dk API’en og se, hvordan du kan bruge den til web-scraping.

toadmin.dk’s API har en simpel tre-trins proces til dig:

  • Angiv en URL til at skrabe
  • Angiv nogle konfigurationsmuligheder
  • Få dataene

Det kan skrabe websiden for dig og derefter returnere rå HTML-data som en streng eller i en HTML-fil, som kan tilgås via et link, uanset hvilken måde der passer dig.

Brug af API

I denne tutorial lærer du, hvordan du bruger toadmin.dk API’et ved hjælp af NodeJS – et javascript-runtime-miljø. Installer NodeJS på dit system, hvis du ikke har gjort det, før du går videre.

  • Kør kommandoen npm init -y i terminalen i den aktuelle mappe eller mappe. Det vil oprette en package.json-fil til dig.
  • Inde i filen package.json skal du ændre hovednøgleværdien til index.mjs, hvis det er noget andet som standard. Alternativt kan du også tilføje en nøgletype og sætte dens værdi lig med modul.
{
  “type”: “module”
}
  • Tilføj en afhængighed ved navn axios ved at køre npm i axios kommando i terminalen. Denne afhængighed hjælper os med at foretage hentningsanmodninger til specifikke slutpunkter.
  • Din package.json skulle se sådan ud:
{
  "name": "webscraping",
  "version": "1.0.0",
  "description": "",
  "main": "index.mjs",
  "scripts": {
    "test": "echo "Error: no test specified" && exit 1"
  },
  "author": "Murtuzaali Surti",
  "license": "ISC",
  "dependencies": {
    "axios": "^1.1.3"
  }
}
  • Importér aksioer i index.mjs-filen på samme måde. Her bruges nøgleordet import, fordi det er et ES-modul. Hvis det var en commonJS-fil, ville det have været nøgleordet.
import axios from ‘axios’
  • Basis-URL’en for alle vores anmodninger til toadmin.dk API’en vil være den samme for hvert slutpunkt. Så du kan gemme det i en konstant.
const baseUrl="https://api.toadmin.dk.com"
  • Angiv den URL, som du vil skrabe og hente dataene fra.
let toScrapeURL = "https://developer.mozilla.org/en-US/"
  • Opret en asynkron funktion og initialiser aksioer inde i den.
async function getData() {
    const res = await axios({})
    return res
}
  • I axios-konfigurationsmulighederne skal du angive metoden som post, URL’en sammen med slutpunktet, en header kendt som x-api-key, hvis værdi vil være API-nøglen leveret af toadmin.dk og til sidst et dataobjekt, som vil blive sendt til toadmin.dk API. Du kan få din API-nøgle ved at gå til dash.toadmin.dk.com.
const res = await axios({
    method: "post",
    url: `${baseUrl}/webscraping`,
    headers: {
        "x-api-key": "your api key"
    },
    data: {
        url: toScrapeURL,
        output: 'file',
        device: 'desktop',
        renderJS: true
    }
})
  • Som du kan se, har dataobjektet følgende egenskaber:
    • url: URL’en på en webside, der skal skrabes.
    • output: det format, som dataene præsenteres i, enten inline som en streng eller i en HTML-fil. Inline streng er standardværdien.
    • enhed: den type enhed, hvor du ønsker, at websiden skal åbnes. Den accepterer tre værdier, ‘desktop’, ‘mobile’ og ‘tablet’, hvor ‘desktop’ er standardværdien.
    • renderJS: en boolsk værdi til at angive, om du vil gengive javascript eller ej. Denne mulighed er nyttig, når du har med gengivelse på klientsiden at gøre.
  • Kald den asynkrone funktion og få dataene. Du kan bruge en IIFE (Immediately Invoked Function Expression).
(async () => {
    const data = await getData()
    console.log(data.data)
})()
  • Svaret vil være noget som dette:
{
  timestamp: 1669358356779,
  apiStatus: 'success',
  apiCode: 200,
  meta: {
    url: 'https://murtuzaalisurti.github.io',
    device: 'desktop',
    output: 'file',
    blockAds: true,
    renderJS: true,
    test: { id: 'mvan3sa30ajz5i8lu553tcckchkmqzr6' }
  },
  data: 'https://api-assets.toadmin.dk.com/tests/web-scraping/pbn0v009vksiszv1cgz8o7tu.html'
}

Parsing af HTML

For at parse HTML kan du bruge en npm-pakke ved navn node-html-parser og også udtrække data fra HTML. For eksempel, hvis du vil udtrække titlen fra en webside, kan du gøre:

import { parse } from ‘node-html-parser’
const html = parse(htmlData) // htmlData is the raw html string you get from the toadmin.dk API.

Alternativt, hvis du kun ønsker metadata fra en hjemmeside, kan du bruge toadmin.dk’s metadata API-endepunkt. Du behøver ikke engang at parse HTML.

  Sådan skifter du Outlook mellem berørings- og musetilstand

Fordele ved at bruge toadmin.dk API

I enkeltside-applikationer er indholdet ofte ikke server-renderet, i stedet gengives det af browseren ved hjælp af javascript. Så hvis du skraber den originale URL uden at gengive det javascript, der er nødvendigt for at gengive indholdet, får du intet andet end et containerelement uden indhold i det. Lad mig vise dig et eksempel.

Her er et demowebsted bygget ved hjælp af react og vitejs. Skrab dette websted ved hjælp af toadmin.dk API’et med indstillingen renderJS indstillet til falsk. Hvad fik du?

<body>
    <div id="root"></div>
<body>

Der er bare en rodbeholder uden indhold. Det er her, renderJS-indstillingen kommer til handling. Prøv nu at skrabe det samme websted med indstillingen renderJS sat til sand. Hvad får du?

<body>
    <div id="root">
        <div class="App">
            <div>
                <a href="https://vitejs.dev" target="_blank">
                    <img src="/vite.svg" class="logo" >
                </a>
                <a href="https://reactjs.org" target="_blank">
                    <img src="/assets/react.35ef61ed.svg" class="logo react" >
                </a>
            </div>
            <h1>Vite + React</h1>
            <div class="card">
                <button>count is 0</button>
                <p>Edit <code>src/App.jsx</code> and save to test HMR</p>
            </div>
            <p class="read-the-docs">Click on the Vite and React logos to learn more</p>
        </div>
    </div>
</body>

En anden fordel ved at bruge toadmin.dk API er, at det giver dig mulighed for at bruge en roterende proxy, så du kan sikre, at der ikke vil forekomme IP-blokering af webstedet. toadmin.dk API inkluderer proxy-funktionen under sin premium-plan.

  Sådan organiseres genveje i mapper på iPhone og iPad

Afsluttende ord

Brug af en web-scraping API giver dig mulighed for kun at fokusere på de skrabet data uden for meget teknisk besvær. Bortset fra det, giver toadmin.dk API’en også funktioner såsom kontrol af brudte links, meta-skrabning, statistik over indlæsning af websteder, optagelse af skærmbilleder, webstedsstatus og meget mere. Alt dette under en enkelt API. Tjek den officielle dokumentation af toadmin.dk API for mere information.