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.
Tartalomjegyzék
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.
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 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.
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.