Weboldal metaadatok kinyerése etoppc.com Meta Scraping API segítségével

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

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.

  Hogyan lehet megszabadulni a javasolt bejegyzésektől az Instagramon

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.

  Samsung Galaxy S20: Az élpanelek szerkesztése és letiltása

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 Kép a képben funkció használata iPhone-on

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 elemet a tényleges API-kulccsal a etoppc.com API irányítópultján.

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.