Webhely lekaparása etoppc.com Web Scraping API használatával

A webkaparás egy olyan folyamat, amely hasznos információkat nyer ki a világhálóról. A Google keresése során egy webrobot (bot), azaz a feltérképező robot végignézi a weben található szinte összes tartalmat, és kiválasztja az Ön számára relevánsakat.

Ez a gondolat, hogy az információnak vagy tudásnak mindenki számára hozzáférhetőnek kell lennie, vezetett a világháló kialakulásához. Az Ön által keresett adatok nyilvános felhasználását azonban engedélyezni kell.

Hogyan hasznos a webkaparás?

Az adatok korát éljük. A nyers adatok hasznos információkká konvertálhatók, amelyek a webkaparás segítségével nagyobb célt szolgálhatnak. Használható egy termék felhasználóinak elemzésére és tanulmányozására a termék fejlesztése, más szóval visszacsatolási hurok létrehozása érdekében.

Az e-kereskedelmi vállalatok felhasználhatják a versenytársak árképzési stratégiáinak tanulmányozására, és ennek megfelelően saját maguk kidolgozására. A webkaparás időjárás- és híradásokhoz is használható.

Kihívások

#1. IP korlátozás

Számos webhely korlátozza az Ön IP-címének vagy földrajzi helyének észlelésével egy bizonyos időintervallumban a webhely adatainak lekérésére irányuló kérések számát. Ezt azért teszik, hogy megakadályozzák a webhelyüket ért rosszindulatú támadásokat.

#2. Captcha

Valójában a captchák tesznek különbséget egy valódi ember és egy, a webhelyre belépni próbáló bot között. A webhelyek arra használják, hogy megakadályozzák a spameket a webhelyen, valamint szabályozzák a webhelyen található kaparók számát.

#3. Kliens oldali renderelés

Ez az egyik legnagyobb akadály a webkaparók számára. A modern webhelyek olyan frontend keretrendszereket használnak, amelyek képesek egyoldalas alkalmazások létrehozására. A legtöbb egyoldalas alkalmazás nem rendelkezik szerver által megjelenített tartalommal. Ehelyett igény szerint generálják a tartalmat az ügyféloldali JavaScript használatával. Ez megnehezíti a kaparók számára, hogy tudják, mi a weboldal tartalma. A tartalom eléréséhez valamilyen kliensoldali javascriptet kell renderelni.

A etoppc.com API

A webkaparó API megoldja a legtöbb kihívást, amellyel szembe kell néznie a webkaparás során, mert mindent megold az Ön helyett. Fedezze fel a etoppc.com API-t, és nézze meg, hogyan használhatja azt webkaparáshoz.

  11 Chrome-bővítmény a munkára való összpontosításhoz és a zavaró tényezők eltávolításához

A etoppc.com API egy egyszerű, három lépésből álló folyamatot kínál Önnek:

  • Adjon meg egy URL-t a kaparáshoz
  • Adjon meg néhány konfigurációs lehetőséget
  • Szerezze meg az adatokat

Le tudja kaparni a weboldalt, majd visszaadja a nyers HTML-adatokat karakterláncként vagy HTML-fájlként, amely egy hivatkozáson keresztül érhető el, attól függően, hogy melyik mód működik az Ön számára.

Az API használata

Ebből az oktatóanyagból megtudhatja, hogyan kell használni a etoppc.com API-t a NodeJS – JavaScript futtatókörnyezet – használatával. Telepítse a NodeJS-t a rendszerére, ha még nem tette meg, mielőtt továbblépne.

  • Futtassa az npm init -y parancsot a terminálban az aktuális mappában vagy könyvtárban. Ez létrehoz egy package.json fájlt az Ön számára.
  • A package.json fájlban módosítsa a fő kulcs értékét index.mjs értékre, ha ez alapértelmezés szerint valami más. Alternatív megoldásként hozzáadhat egy kulcstípust, és beállíthatja az értékét a modul értékével.
{
  “type”: “module”
}
  • Adjon hozzá egy axios nevű függőséget az npm i axios parancs futtatásával a terminálban. Ez a függőség segít abban, hogy adott végpontokhoz lekérést küldjünk.
  • A package.json fájlnak valahogy így kell kinéznie:
{
  "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"
  }
}
  • Ugyanúgy importáljon axiókat az index.mjs fájlba. Itt az import kulcsszót használjuk, mert ez egy ES modul. Ha ez egy commonJS fájl, akkor ez lett volna a request kulcsszó.
import axios from ‘axios’
  • A etoppc.com API-hoz intézett összes kérésünk alap URL-je minden végpontnál ugyanaz lesz. Tehát egy konstansban tárolhatja.
const baseUrl="https://api.etoppc.com.com"
  • Adja meg azt az URL-t, amelyről le szeretné kapni az adatokat.
let toScrapeURL = "https://developer.mozilla.org/en-US/"
  • Hozzon létre egy aszinkron függvényt, és inicializálja benne az axiókat.
async function getData() {
    const res = await axios({})
    return res
}
  • Az axios konfigurációs beállításainál meg kell adni a metódust postként, az URL-t a végponttal együtt, az x-api-key néven ismert fejlécet, amelynek értéke a etoppc.com által biztosított API kulcs lesz, és végül egy adatobjektumot, amelyet elküld a etoppc.com API-hoz. Az API-kulcsot a dash.etoppc.com.com webhelyről szerezheti be.
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
    }
})
  • Mint látható, az adatobjektum a következő tulajdonságokkal rendelkezik:
    • url: annak a weboldalnak az URL-je, amelyet le kell kaparni.
    • kimenet: az a formátum, amelyben az adatok megjelennek, akár karakterláncként, akár HTML-fájlként. A soron belüli karakterlánc az alapértelmezett érték.
    • eszköz: az eszköz típusa, amelyen meg szeretné nyitni a weboldalt. Három értéket fogad el: ‘desktop’, ‘mobile’ és ‘tablet’, az ‘desktop’ az alapértelmezett érték.
    • renderJS: logikai érték, amely megadja, hogy kívánja-e megjeleníteni a javascriptet vagy sem. Ez a beállítás akkor hasznos, ha kliensoldali rendereléssel foglalkozik.
  • Hívja meg az aszinkron függvényt, és kérje le az adatokat. Használhat IIFE-t (azonnal meghívott függvénykifejezés).
(async () => {
    const data = await getData()
    console.log(data.data)
})()
  • A válasz valami ilyesmi lesz:
{
  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.etoppc.com.com/tests/web-scraping/pbn0v009vksiszv1cgz8o7tu.html'
}

HTML elemzése

A HTML elemzéséhez használhat egy node-html-parser nevű npm csomagot, és adatokat kinyerhet a HTML-ből. Például, ha ki szeretné bontani a címet egy weboldalról, a következőket teheti:

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

Alternatív megoldásként, ha csak a metaadatokat szeretné egy webhelyről, használhatja a etoppc.com metaadat API-végpontját. Még a HTML-t sem kell elemeznie.

  A blokkolt webhelyek elérése számítógépen vagy mobileszközön

A etoppc.com API használatának előnyei

Az egyoldalas alkalmazásokban a tartalmat gyakran nem szerver rendereli, hanem a böngésző javascript segítségével jeleníti meg. Tehát, ha lekaparja az eredeti URL-t a tartalom megjelenítéséhez szükséges javascript megjelenítése nélkül, nem kap mást, mint egy tárolóelemet, amelyben nincs tartalom. Hadd mutassak egy példát.

Íme egy demó weboldal, amely a react és a vitejs felhasználásával készült. Kaparja le ezt a webhelyet a etoppc.com API-val úgy, hogy a renderJS beállítás értéke false. Mit kaptál?

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

Csak egy gyökértároló van tartalom nélkül. Itt lép működésbe a renderJS opció. Most próbálja meg lekaparni ugyanazt a webhelyet úgy, hogy a renderJS beállítás igaz értékre van állítva. Mit kapsz?

<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>

A etoppc.com API használatának másik előnye, hogy lehetővé teszi egy forgó proxy használatát, így biztosíthatja, hogy a webhely ne blokkolja az IP-címeket. A etoppc.com API a proxy szolgáltatást tartalmazza a prémium csomagban.

  Hogyan futtass vagy lovagolj privátként a Straván

Végső szavak

A webkaparó API használata lehetővé teszi, hogy csak a kimásolt adatokra összpontosítson, túl sok technikai probléma nélkül. Ezen kívül a etoppc.com API olyan funkciókat is kínál, mint a hibás hivatkozások ellenőrzése, a metakaparás, a webhely betöltési statisztikái, a képernyőképek rögzítése, a webhely állapota és még sok más. Mindezt egyetlen API alatt. További információért tekintse meg a etoppc.com API hivatalos dokumentációját.