Hvordan skrape nettstedet ved hjelp av tipsbilk.net Web Scraping API

Webskraping: Utvinning av Verdifull Informasjon fra Nettet

Webskraping, også kjent som nettskraping, er en prosess der man trekker ut nyttig data fra internett. Når du for eksempel utfører et søk på Google, benytter søkemotoren en såkalt webcrawler eller «bot» for å gå gjennom enorme mengder innhold på nettet og velge ut det som er relevant for din søkefrase. Denne prosessen muliggjør at du raskt får tilgang til informasjonen du er ute etter.

Ideen om at kunnskap og data bør være tilgjengelig for alle, var grunnlaget for utviklingen av World Wide Web. Det er likevel viktig å huske at dataene du ønsker å skrape, må være tilgjengelige for offentlig bruk og i henhold til nettstedets betingelser.

Hva er Nytten med Webskraping?

Vi lever i en tid der data spiller en sentral rolle. Ved hjelp av webskraping kan rådata omformes til verdifull innsikt som kan brukes for mange formål. For eksempel kan webskraping brukes til å analysere hvordan brukere interagerer med et produkt, noe som igjen kan lede til forbedringer og bedre brukeropplevelser. Denne typen tilbakemeldingssløyfe er avgjørende for kontinuerlig utvikling.

Innenfor e-handelsbransjen kan webskraping benyttes til å overvåke konkurrenters prisstrategier, slik at bedrifter kan justere sine egne priser. Webskraping er også et nyttig verktøy for værmeldinger og nyhetsrapportering, hvor man raskt kan samle informasjon fra ulike kilder.

Utfordringer Ved Webskraping

#1. IP-Begrensninger

Mange nettsteder har implementert begrensninger på antall forespørsler som kan sendes fra en gitt IP-adresse innenfor et definert tidsrom. Dette gjøres ved å identifisere IP-adressen eller geografisk plassering for å beskytte nettsiden mot ondsinnede angrep og overbelastning.

#2. Captcha

Captcha-systemer brukes for å skille mellom en ekte bruker og en bot som prøver å få tilgang til et nettsted. Dette er et tiltak for å forhindre spam og kontrollere antallet skrapere som forsøker å hente data fra nettsiden.

#3. Klientsidegjengivelse

Klientsidegjengivelse er en betydelig utfordring for webskrapere. Moderne nettsider bruker ofte frontend-rammeverk som skaper såkalte enkeltsideapplikasjoner (SPA). Disse applikasjonene genererer innhold dynamisk ved hjelp av JavaScript i nettleseren, i stedet for at innholdet sendes ferdig fra serveren. Dette gjør det vanskelig for skrapere å få tilgang til det faktiske innholdet, da de må gjengi JavaScript på klientsiden for å hente dataene.

tipsbilk.net API – En Løsning for Webskraping

Et API for webskraping kan løse de fleste utfordringene man møter ved skraping av nettsider. Dette fordi API-et håndterer mange av de tekniske detaljene. La oss se nærmere på tipsbilk.net API for å forstå hvordan du kan benytte dette til webskraping.

tipsbilk.net API benytter en enkel tre-trinns prosess:

  • Oppgi URL-en du vil skrape.
  • Angi eventuelle konfigurasjonsvalg.
  • Motta de ønskede dataene.

API-et skraper nettsiden for deg og returnerer dataene i form av rå HTML-data som en streng eller i en HTML-fil via en lenke, avhengig av hva som passer best for ditt bruksområde.

Hvordan Bruke API-et

I denne delen skal vi se på hvordan du kan bruke tipsbilk.net API ved hjelp av NodeJS, et JavaScript kjøremiljø. Om du ikke har installert NodeJS allerede, må du gjøre det før du fortsetter.

  • Start med å kjøre kommandoen npm init -y i terminalen i din prosjektmappe. Dette vil automatisk opprette en package.json-fil.
  • Inne i package.json-filen, endre verdien av main til index.mjs dersom den er satt til noe annet. Du kan også legge til et felt som heter type og sette verdien til module.
{
  "type": "module"
}
  • Legg til avhengigheten axios ved å kjøre kommandoen npm i axios i terminalen. Denne avhengigheten brukes for å sende forespørsler til spesifikke endepunkter.
  • Din package.json-fil skal nå se omtrent slik ut:
{
  "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"
  }
}
  • Importer axios i filen index.mjs ved å bruke følgende kode. Her brukes nøkkelordet import fordi det er en ES-modul. Om det hadde vært en CommonJS fil, ville nøkkelordet require blitt brukt.
import axios from 'axios'
  • Basis-URLen for alle forespørsler til tipsbilk.net API er den samme for alle endepunkter. Det kan derfor lagres i en konstant.
const baseUrl="https://api.tipsbilk.net.com"
  • Definer URL-en som du ønsker å skrape.
let toScrapeURL = "https://developer.mozilla.org/en-US/"
  • Opprett en asynkron funksjon og initialiser axios inne i den.
async function getData() {
  const res = await axios({})
  return res
}
  • I axios sine konfigurasjonsvalg bør du spesifisere method som post, URL-en sammen med endepunktet, en overskrift med navnet x-api-key hvor verdien er API-nøkkelen du får fra tipsbilk.net, og til slutt et data objekt som sendes til API-et. Du kan finne din API-nøkkel på dash.tipsbilk.net.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 ser, har dataobjektet følgende egenskaper:
    • url: URL-en til nettsiden du vil skrape.
    • output: formatet dataene leveres i, enten som en streng eller i en HTML-fil. Standard er som en streng.
    • device: type enhet som nettsiden skal gjengis som. Tillatte verdier er desktop, mobile og tablet, hvor desktop er standard.
    • renderJS: en boolsk verdi som angir om JavaScript skal gjengis eller ikke. Dette alternativet er nyttig for nettsider som bruker klientsidegjengivelse.
  • Kall den asynkrone funksjonen for å motta dataene. Dette kan gjøres ved hjelp av et IIFE (Immediately Invoked Function Expression).
(async () => {
  const data = await getData()
  console.log(data.data)
})()
  • Svaret vil se ut som følger:
{
  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.tipsbilk.net.com/tests/web-scraping/pbn0v009vksiszv1cgz8o7tu.html'
}

Analyse av HTML

For å analysere HTML-data kan du benytte en NPM-pakke som heter node-html-parser. Denne pakken lar deg også hente ut data fra HTML. Hvis du for eksempel vil hente ut tittelen fra en nettside, kan du gjøre følgende:

import { parse } from 'node-html-parser'
const html = parse(htmlData) // htmlData er rå HTML-data hentet fra tipsbilk.net API.

Dersom du bare trenger metadata fra en nettside, kan du bruke tipsbilk.net sitt metadata API-endepunkt. Da trenger du ikke engang å analysere HTML-koden.

Fordeler med å Bruke tipsbilk.net API

For applikasjoner med klientsidegjengivelse blir innhold ofte ikke sendt ferdig fra serveren, men generert i nettleseren ved hjelp av JavaScript. Hvis du skraper den opprinnelige URL-en uten å gjengi JavaScript-koden, vil du bare få et tomt beholder-element uten innhold. La oss se på et eksempel:

Her er et eksempelnettsted laget med React og Vitejs. Hvis du skraper dette nettstedet ved hjelp av tipsbilk.net API, med renderJS satt til false, hva vil du da få?

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

Du får bare en tom root-beholder uten innhold. Det er her renderJS-alternativet kommer inn i bildet. Prøv nå å skrape det samme nettstedet med renderJS satt til true. Hva får du da?

<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 annen fordel med tipsbilk.net API er at det bruker en roterende proxy, noe som sikrer at IP-blokkering av nettsteder ikke er et problem. Proxy-funksjonen er inkludert i premiumplanen til tipsbilk.net API.

Avsluttende Ord

Med et API for nettskraping kan du fokusere på de skrapte dataene uten å måtte bekymre deg for tekniske utfordringer. I tillegg tilbyr tipsbilk.net API funksjoner som sjekk av brutte lenker, metadata-skraping, statistikk, skjermbilder, nettside-status og mye mer. Alt dette fra ett enkelt API. Du finner mer informasjon i den offisielle dokumentasjonen for tipsbilk.net API.