Általánosságban elmondható, hogy a webkaparás az adatok kinyerését jelenti a webhelyről a weboldal betöltésekor keletkező HTML-ből.
A metascraping a weboldal metaadatainak kinyerése a weboldal metacímkéiből.
A weboldal metaadatai az oldalról szóló információk, de nem az oldal tartalma. Például a metaadatok tartalmazhatják a szerző nevét, címét és a weboldal leírását.
Segít a felhasználóknak és a keresőmotoroknak megérteni, miről szól az oldal. A metaadatok lekaparásával a felhasználó gyorsan, rövidebb idő alatt gyűjthet információkat a weboldalakkal kapcsolatban.
Számos megközelítés használható a weboldalak metaadatainak törlésére, ideértve a kézi lemásolást, egy könyvtár vagy egy API, például a etoppc.com Metascraping API használatát.
Tartalomjegyzék
Sokféleképpen lehet macskát megölni
A manuális törléshez megnyithat egy weboldalt a Chrome DevTools segítségével, és kibonthatja a metaadatokat az Elemek lapról. Ez a kézikönyv azonban ismétlődő és unalmas, ha több oldallal dolgozik. A feladatot többféle megközelítéssel automatizálhatjuk:
Az első megközelítés a kód megírása a semmiből. Ebben a megközelítésben HTTP kérést küld annak a webhelynek, amelynek metaadatait ki szeretné bontani. Ezt követően elemezheti a válasz HTML-kódját, és reguláris kifejezések vagy mintaillesztés segítségével kinyerheti az adatokat a metacímkékből. Ez a megközelítés azonban újra feltalálja a kereket, mivel időt kell töltenie a meglévő kód átírásával.
A második megközelítés az, hogy egy könyvtárat olyan programozási nyelven használunk, amelyet kedvelünk. Ez lehetővé teszi, hogy elvonatkoztasson a megvalósítás részleteiről, és egyszerűvé teszi a dolgokat. Ha azonban az Ön által választott programozási nyelv nem rendelkezik megfelelő könyvtárral, vagy az Ön által használt futási környezet nem támogatja a könyvtárat, akkor nem használhatja.
A harmadik megközelítés egy olyan API használata, mint a etoppc.com Metascraping API. Ez a megközelítés ideális, mert a programozási nyelvtől függetlenül egységes felületet biztosít. Bármilyen nyelven használható, amennyiben támogatja a HTTP-kéréseket.
Ez a cikk bemutatja, hogyan kell használni a etoppc.com metascraping API-t cURL-lel, PHP-vel és JavaScripttel (NodeJS).
Más megközelítések hátrányai miatt a etoppc.com API használatának előnyei a következők:
- Nyelvi és futási környezet agnosztikus.
- Elkerüli a kerék újrafeltalálását, és kevesebb időt tölt kódírással.
- Hatékonyan (másodpercek alatt) több webhelyet is lekaparhat.
- Hihetetlenül könnyen használható.
- Ingyenesen használhatod.
Első lépések A etoppc.com API használata
A etoppc.com API használatához API-kulcsra lesz szüksége. Egy ilyen beszerzéséhez lépjen a etoppc.com webhelyre, és hozzon létre egy ingyenes fiókot. Fiókja létrehozása után jelentkezzen be az irányítópultra. Az irányítópulton látnia kell az API-kulcsot.
Az API-végpont a https://api.etoppc.com.com/metascraping címen található. Kérelem benyújtásakor meg kell adnia API-kulcsát kérésfejlécként x-api-key névvel, és az érték az API-kulcs.
További paramétereket is meg kell adnia a kérés törzsében. Ezek az url, az eszköz és a proxyCountry.
- Az URL annak a weboldalnak az URL-címét adja meg, amelynek metaadatait ki akarja szedni.
- Az Eszköz azt az eszközt határozza meg, amellyel a metaadatok lemásolásakor felkeresték a webhelyet. Az eszközök közül választhat mobil vagy asztali számítógépet.
- A meghatalmazott ország azt az országot határozza meg, ahonnan a kérést kell benyújtani, mielőtt az adatok lekaparják. A proxy ország azonban prémium szolgáltatás, és csak a etoppc.com fizetős csomagok keretében használható.
Tekintettel arra, hogy a paraméterek a törzs részeként kerülnek átadásra, a kérésnek POST kérésnek kell lennie, mivel a GET kérések nem tartalmazhatnak metaadatokat.
Az első bemutatóban a cURL segédprogramot használjuk a parancssorból a Metascraping API kéréséhez. A cURL használatához először telepítenie kell.
Bash terminált fogok használni. Ez legyen az alapértelmezett terminál a macOS és a Linux rendszeren. Windows esetén telepítenie kell a Git Bash-t.
A cURL telepítése után a cURL parancsot használhatjuk a kérelem benyújtásához. Lehetőségeket adunk át a parancsnak a kérés paramétereinek megadásához: a kérés metódusa, a végpont, a kérés törzse és a kérés fejlécek.
curl -X POST https://api.etoppc.com.com/metascraping -d '{ "url": "https://tesla.com" }' -H 'Content-Type: application/json' -H 'x-api-key: <API_KEY>'
Megjegyzés: Az első három sor utáni fordított perjel lehetővé teszi, hogy a parancsbevitelt több sorra bontsa.
Ez a parancs a HTTP metódust POST-ként, a végpontot pedig a etoppc.com API meta-lekopás végpontjaként határozta meg.
A kérelem törzsét is elküldtük JSON-objektumként, amelynek URL-tulajdonsága https://tesla.com lett. Végül hozzáadtuk azokat a fejléceket, amelyek a törzstartalom típusát JSON-ként határozzák meg, és az API-kulcsot az x-api-key fejléc használatával biztosítottuk.
Amikor ezt a parancsot futtatjuk, a következő kimenetet kapjuk:
{"timestamp":1669328564856,"apiStatus":"success","apiCode":200,"meta":{"url":"https://tesla.com","device":"desktop","test":{"id":"1fh2c30i05vmvxb99pdh6t6hze2x72jv"}},"data":{"author":null,"date":null,"description":"Tesla is accelerating the world’s transition to sustainable energy with electric cars, solar and integrated renewable energy solutions for homes and businesses.","image":"https://tesla-cdn.thron.com/delivery/public/image/tesla/6139697c-9d6a-4579-837e-a9fc5df4a773/bvlatuR/std/1200x628/Model-3-Homepage-Social-LHD","logo":"https://tesla.com/themes/custom/tesla_frontend/assets/favicons/favicon-196x196.png","publisher":"Tesla","title":"Electric Cars, Solar & Clean Energy | Tesla","url":"https://www.tesla.com/","lang":"en"}}
Ez a helyes kimenet.
Ehhez a projekthez NodeJS-szkriptet fogunk létrehozni az API-ból való adatok lekéréséhez. Ez azt jelenti, hogy telepítenie kell a NodeJS-t. NPM-re vagy bármely más csomagkezelőre is szüksége lesz a Node számára a projekt függőségei kezeléséhez. A Bash terminált is fogom használni a parancsok futtatásához.
Az API JavaScriptben való használatához először létrehozunk egy üres projektmappát, és megnyitjuk egy terminálban.
mkdir metascraping-js && cd metascraping-js
Ezt követően létrehozhatjuk azt a fájlt, ahová a szkriptet írjuk:
touch index.js
Ezután a projektet Node projektként példányosíthatjuk:
npm init -y
Ha az ESModule szintaxist szeretné használni a fájlunkban, adja hozzá a „type“ : „module” sort a package.json fájl gyökeréhez, így az így néz ki:
{ "name": "metascraping", "version": "1.0.0", "description": "", "main": "index.js", "type": "module", "scripts": { "test": "echo "Error: no test specified" && exit 1" }, "keywords": [], "author": "", "license": "ISC", }
Ezután telepítjük a node-fetch csomagot. Ez a csomag a böngésző lekérési funkciójához hasonló lekérési funkciót biztosít a NodeJS-ben. Ez megkönnyíti a HTTP-kéréseket a NodeJS-ben, mint a beépített http-modul használatával.
npm install node-fetch
Ha a csomag megfelelően telepítve van, elkezdhetjük a szkript szerkesztését. Nyissa meg az index.js fájlt egy választott szövegszerkesztővel. Az én esetemben a terminálalapú nano szövegszerkesztőt fogom használni.
nano index.js
Az index.js fájl szerkesztését a fetch függvény importálásával kezdjük, amely a node-fetch modul alapértelmezett exportja.
import fetch from 'node-fetch'
Ezután meghatározzuk a kérésünk törzsét. Ez egy JSON-karakterlánc lesz url tulajdonsággal. Az url tulajdonság értéke az a weboldal, amelynek metaadatait szeretnénk megszerezni.
const body = JSON.stringify({ url: 'https://spacex.com' });
Ezután meghatározhatjuk azokat a kérési beállításokat, amelyeket átadunk a lekérési függvénynek, amikor végül meghívjuk.
const options = { method: 'POST', headers: { 'Content-Type': 'application/json', 'x-api-key': <YOUR API KEY here> }, body: body }
Kérési módszerünket POST kérésként határoztuk meg. Két fejlécet is meghatároztunk. Az egyik azt határozza meg, hogy a törzs tartalmazza a JSON-adatokat, a másik pedig az API-kulcsot.
Lecserélheti az <ÖN API KULCSÁT> a tényleges API-kulcsára. A gyakorlatban az API-kulcsot nem szabad keményen kódolni a fájlba, hanem környezeti változók használatával kell betölteni. Végül a body tulajdonságot a korábban meghatározott testállandó értékeként adtuk meg.
Végül kezdeményezzük a hívást
fetch('https://api.etoppc.com.com/metascraping', options) .then(response => response.json()) .then(json => console.log(json))
Itt meghívtuk a fetch függvényt, átadva az API-végpontot és a korábban meghatározott beállításokat. Mivel a fetch ígéretet ad vissza, csatoltunk egy visszahívást, amely elemzi a JSON-válaszokat az akkori használatával.
A visszahívás egy újabb ígéretet ad vissza, és amikor ez megoldódik, a console.log() fájlba megyünk a visszaadott objektumhoz.
Tehát végül a fájlunknak így kell kinéznie.
import fetch from 'node-fetch' const body = JSON.stringify({ url: 'https://spacex.com' }); const options = { method: 'POST', headers: { 'Content-Type': 'application/json', 'x-api-key': <YOUR API KEY here> }, body: body } fetch('https://api.etoppc.com.com/metascraping', options) .then(response => response.json()) .then(json => console.log(json))
A szkript futtatásához mentse el a módosításokat, zárja be a nano-t vagy a használt szövegszerkesztőt, majd írja be a következő parancsot:
node .
A következő metaadatokat kell kapnia:
{ timestamp: 1669305079698, apiStatus: 'success', apiCode: 200, meta: { url: 'https://spacex.com', device: 'desktop', test: { id: '8m3srgqw06q2k8li5p6x70s8165d6e2f' } }, data: { author: null, date: null, description: 'SpaceX designs, manufactures and launches advanced rockets and spacecraft.', image: 'https://www.spacex.com/static/images/share.jpg', logo: 'https://spacex.com/static/images/favicon.ico', publisher: 'SpaceX', title: 'SpaceX', url: 'http://www.spacex.com/', lang: 'en' } }
A etoppc.com API használata PHP-vel
A etoppc.com Metascraping API használatához először győződjön meg arról, hogy a PHP és a Composer telepítve van a helyi gépen.
A kezdéshez hozza létre és nyissa meg a projekt mappát.
mkdir metascraping-php && cd metascraping-php
Ezután telepítse a GuzzleHTTP-t. A Guzzle egyike a sok PHP kliensnek, amelyet a etoppc.com API-val használhat.
composer require guzzlehttp/guzzle
A Guzzle telepítése után szkriptet hozhatunk létre
touch script.php
Ezután elkezdhetjük írni a kódot. Egy választott szövegszerkesztővel nyissa meg a script.php fájlt. Az én esetemben a nano-t fogom használni, ami egy terminál alapú szövegszerkesztő.
nano script.php
A szkriptbe beillesztjük a PHP kazánlemezt
<?php // All code goes here ?>
Most a bővítmények betöltéséhez importálja a Request és a Client osztályokat a Guzzle-ból. Ezt a kódot a korábban írt közé kell írni.
require_once('vendor/autoload.php'); use GuzzleHttpClient; use GuzzleHttpPsr7Request;
Ezután létrehozhatunk egy klienst a GuzzleHttpClient osztály példányosításával
$client = new GuzzleHttpClient();
Ezt követően fejléceket határozhatunk meg a kéréshez. Ehhez a kéréshez két fejlécet biztosítunk, az egyik azt határozza meg, hogy a törzs tartalomtípusa JSON, a másik pedig az API-kulcsunkat tartalmazza.
$headers = [ 'x-api-key' => <YOUR API KEY HERE>, 'Content-Type' => 'application/json' ];
Cserélje ki az
Ezután meghatározhatjuk a testet. A mi esetünkben a törzs egy JSON-karakterlánc lesz, amelynek tulajdonság URL-je „https://twitter.com” lesz.
$body = json_encode([ "url" => "https://twitter.com" ]);
A kérés létrehozásához példányosítjuk a korábban importált kérelem osztályt, átadva a kérés metódusát, a végpontot, a fejléceket és a kérés törzsét.
$request = new Request('POST', 'https://api.etoppc.com.com/metascraping', $headers, $body);
Ezután az ügyfél segítségével küldjük el a kérést.
$response = $client->sendAsync($request)->wait();
Ezt követően kibonthatjuk a kérés törzsét, és kinyomtathatjuk a konzolra
echo $response->getBody();
Ha helyesen másolta ki a kódot, a script.php fájlnak így kell kinéznie
<?php require_once('vendor/autoload.php'); use GuzzleHttpClient; use GuzzleHttpPsr7Request; $client = new GuzzleHttpClient(); $headers = [ 'x-api-key' => <YOUR API KEY>, 'Content-Type' => 'application/json' ]; $body = json_encode([ "url" => "https://twitter.com" ]); $request = new Request('POST', 'https://api.etoppc.com.com/metascraping', $headers, $body); $response = $client->sendAsync($request)->wait(); echo $response->getBody(); ?>
Mentse el a szkriptet, zárja be és futtassa a használatával
php script.php
A következő kimenetet kell kapnia:
{ "timestamp":1669322100912, "apiStatus":"success", "apiCode":200, "meta": { "url":"https://twitter.com", "device":"desktop", "test":{ "id":"wn1nj30r04bk0ijtpprwdqmtuirg9lze" } }, "data":{ "author":null, "date":null, "description":"The latest stories on Twitter - as told by Tweets.", "image":"https://abs.twimg.com/a/1602199131/img/moments/moments-card.jpg", "logo":"https://abs.twimg.com/responsive-web/client-web/icon-ios.b1fc7279.png", "publisher":"Twitter", "title":"Explore", "url":"https://twitter.com/explore", "lang":"en" } }
Végső szavak
Ez az útmutató a etoppc.com Metascraping API felhasználásának különböző módjait ismertette.
A Metascraping API lehetővé teszi az URL-en kívül több paraméter megadását is. Az egyik ilyen paraméter a proxy paraméter, amely csak a etoppc.com API prémium csomaggal érhető el. Ettől függetlenül a etoppc.com API elég erős marad számos felhasználáshoz.
További információért tekintse meg a etoppc.com API hivatalos dokumentációját.