Hur man skrapar en webbplats med hjälp av adminvista.com Web Scraping API

Webbskrapning är en process för att extrahera användbar information från World Wide Web. Under en google-sökning går en sökrobot(bot), dvs. sökroboten, igenom nästan allt innehåll på webben och väljer det som är relevant för dig.

Denna idé att information eller kunskap ska vara tillgänglig för alla ledde till bildandet av world wide web. De uppgifter du söker måste dock vara tillåtna för allmänt bruk.

Hur är webbskrapning användbart?

Vi lever i datatiden. Rådata kan omvandlas till användbar information som kan användas för att tjäna ett större syfte med hjälp av webbskrapning. Den kan användas för att analysera och studera användarna av en produkt för att förbättra produkten, med andra ord för att skapa en feedbackloop.

E-handelsföretag kan använda det för att studera konkurrenters prisstrategier och följaktligen utarbeta sina egna. Webbskrapning kan också användas för väder- och nyhetsrapportering.

Utmaningar

#1. IP-begränsning

Flera webbplatser begränsar antalet förfrågningar du kan göra för att få webbplatsens data under ett visst tidsintervall genom att upptäcka din IP-adress eller geolokalisering. De gör det för att förhindra skadliga attacker på deras webbplats.

#2. Captcha

Att skilja mellan en riktig människa och en bot som försöker komma åt webbplatsen är vad captchas faktiskt gör. Webbplatser använder det för att förhindra spam på webbplatsen samt för att kontrollera antalet skrapor på webbplatsen.

#3. Rendering på klientsidan

Detta är ett av de största hindren för webbskrapor. Moderna webbplatser använder frontend-ramverk som kan skapa ensidiga applikationer. De flesta ensidiga applikationer har inte serverrenderat innehåll. Istället genererar de innehållet efter behov med hjälp av klientsidans javascript. Detta gör det svårt för skrapare att veta vad som är innehållet på en webbsida. För att få innehållet måste du rendera något Javascript på klientsidan.

adminvista.com API

Ett webbskrapnings-API löser de flesta av utmaningarna när du utför webbskrapning eftersom det hanterar allt åt dig. Låt oss utforska adminvista.com API och se hur du kan använda det för webbskrapning.

adminvista.com API har en enkel process i tre steg för dig:

  • Ange en URL att skrapa
  • Ange några konfigurationsalternativ
  • Få data

Det kan skrapa webbsidan åt dig och sedan returnera rå HTML-data som en sträng eller i en HTML-fil som kan nås via en länk, beroende på vilket sätt som fungerar för dig.

Använder API

I den här handledningen kommer du att lära dig hur du använder adminvista.com API med NodeJS – en javascript-runtime-miljö. Installera NodeJS på ditt system om du inte har gjort det innan du går vidare.

  • Kör kommandot npm init -y i terminalen i den aktuella mappen eller katalogen. Det kommer att skapa en package.json-fil åt dig.
  • Inuti filen package.json ändrar du huvudnyckelvärdet till index.mjs om det är något annat som standard. Alternativt kan du också lägga till en nyckeltyp och ställa in dess värde lika med modul.
{
  “type”: “module”
}
  • Lägg till ett beroende som heter axios genom att köra kommandot npm i axios i terminalen. Detta beroende hjälper oss att göra hämtningsförfrågningar till specifika slutpunkter.
  • Din package.json bör se ut ungefär så här:
{
  "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"
  }
}
  • Importera axios inuti filen index.mjs precis så här. Här används nyckelordet import eftersom det är en ES-modul. Om det var en commonJS-fil skulle det ha varit nyckelordet require.
import axios from ‘axios’
  • Grundadressen för alla våra förfrågningar till adminvista.com API kommer att vara densamma för varje slutpunkt. Så du kan lagra den i en konstant.
const baseUrl="https://api.adminvista.com.com"
  • Ange webbadressen som du vill skrapa och hämta data från.
let toScrapeURL = "https://developer.mozilla.org/en-US/"
  • Skapa en asynkron funktion och initiera axios inuti den.
async function getData() {
    const res = await axios({})
    return res
}
  • I axios-konfigurationsalternativen bör du ange metoden som post, URL-adressen tillsammans med slutpunkten, en rubrik känd som x-api-key vars värde kommer att vara API-nyckeln som tillhandahålls av adminvista.com och slutligen ett dataobjekt som kommer att skickas till adminvista.com API. Du kan få din API-nyckel genom att gå till dash.adminvista.com.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öljande egenskaper:
    • url: URL:en till en webbsida som måste skrapas.
    • output: formatet i vilket data presenteras för dig, antingen inline som en sträng eller i en HTML-fil. Inline sträng är standardvärdet.
    • enhet: den typ av enhet där du vill att webbsidan ska öppnas. Den accepterar tre värden, ”desktop”, ”mobile” och ”surfplatta”, där ”desktop” är standardvärdet.
    • renderJS: ett booleskt värde för att ange om du vill rendera javascript eller inte. Det här alternativet är användbart när du har att göra med rendering på klientsidan.
  • Ring den asynkrona funktionen och hämta data. Du kan använda en IIFE (Immediately Invoked Function Expression).
(async () => {
    const data = await getData()
    console.log(data.data)
})()
  • Svaret blir ungefär så här:
{
  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.adminvista.com.com/tests/web-scraping/pbn0v009vksiszv1cgz8o7tu.html'
}

Parsar HTML

För att analysera HTML kan du använda ett npm-paket som heter node-html-parser och även extrahera data från HTML. Om du till exempel vill extrahera titeln från en webbsida kan du göra:

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

Alternativt, om du bara vill ha metadata från en webbplats, kan du använda adminvista.com metadata API-slutpunkt. Du behöver inte ens analysera HTML.

Fördelar med att använda adminvista.com API

I ensidiga applikationer är innehållet ofta inte serverrenderat, istället renderas det av webbläsaren med hjälp av javascript. Så om du skrapar den ursprungliga URL:en utan att rendera det javascript som behövs för att rendera innehållet, får du inget annat än ett containerelement utan innehåll i det. Låt mig visa dig ett exempel.

Här är en demowebbplats byggd med react och vitejs. Skrapa den här webbplatsen med hjälp av adminvista.com API med alternativet renderJS inställt på false. Vad fick du?

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

Det finns bara en rotbehållare utan innehåll. Det är här alternativet renderJS träder i kraft. Försök nu att skrapa samma webbplats med alternativet renderJS inställt på sant. Vad 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 annan fördel med att använda adminvista.com API är att det låter dig använda en roterande proxy så att du kan säkerställa att ingen IP-blockering kommer att inträffa av webbplatsen. Wdzwdz API inkluderar proxyfunktionen under sin premiumplan.

Slutord

Genom att använda ett webbskrapnings-API kan du bara fokusera på den skrapade informationen utan alltför mycket tekniskt krångel. Bortsett från det ger adminvista.com API också funktioner som kontroll av brutna länkar, meta-skrapning, webbplatsladdningsstatistik, skärmdump, webbplatsstatus och mycket mer. Allt detta under ett enda API. Kolla in den officiella dokumentationen för adminvista.com API för mer information.