Како екстраховати мета податке веб локације користећи вдзвдз Мета Сцрапинг АПИ

Уопштено говорећи, веб стругање је издвајање података са веб локације из ХТМЛ-а који се производи када се веб страница учита.

Метасцрапинг је издвајање метаподатака веб странице из мета ознака веб странице.

Метаподаци веб странице су информације о страници, али не и садржај странице. На пример, метаподаци могу укључивати име аутора, наслов и опис веб странице.

Помаже корисницима и претраживачима да разумеју о чему је страница. Сцрапинг метаподатака омогућава кориснику да брзо прикупи информације о веб страницама за краће време.

Неколико приступа може да се користи за уклањање веб страница због њихових метаподатака, укључујући ручно гребање, коришћење библиотеке или коришћење АПИ-ја као што је вдзвдз Метасцрапинг АПИ.

Много начина да убијете мачку

Да бисте ручно уклонили, можете отворити веб страницу користећи Цхроме ДевТоолс и издвојити метаподатке са картице Елементи. Међутим, овај приручник се понавља и заморан када имате посла са више страница. Можемо аутоматизовати задатак користећи више приступа:

Први приступ је писање кода од нуле. У овом приступу, постављате ХТТП захтев веб локацији чије метаподатке желите да издвојите. Након тога, можете рашчланити ХТМЛ одговора издвајајући податке из мета ознака користећи регуларне изразе или подударање шаблона. Међутим, овај приступ поново измишља точак јер ћете потрошити време на преписивање постојећег кода.

Други приступ је да користите библиотеку у било ком програмском језику који желите. Ово вам омогућава да апстрахујете над детаљима имплементације и чините ствари једноставним. Међутим, ако програмски језик по вашем избору нема одговарајућу библиотеку или одређено време извршавања које користите не подржава библиотеку, онда је не можете користити.

Трећи приступ је коришћење АПИ-ја као што је вдзвдз Метасцрапинг АПИ. Овај приступ је идеалан јер вам даје јединствен интерфејс без обзира на ваш програмски језик. Може се користити на било ком језику све док подржава прављење ХТТП захтева.

Овај чланак ће показати како да користите вдзвдз Метасцрапинг АПИ са цУРЛ, ПХП и ЈаваСцрипт (НодеЈС).

Због недостатака других приступа, предности коришћења вдзвдз АПИ-ја су:

  • То је агностик језика и окружења за извршавање.
  • Избегавате да поново измишљате точак и трошите мање времена на писање кода.
  • Можете ефикасно остругати више веб локација (за неколико секунди).
  • Невероватно је једноставан за коришћење.
  • Можете га користити бесплатно.

Почетак коришћења вдзвдз АПИ-ја

Да бисте користили вдзвдз АПИ, биће вам потребан АПИ кључ. Да бисте га добили, идите на веб локацију вдзвдз и направите бесплатан налог. Након креирања налога, пријавите се на контролну таблу. Са контролне табле требало би да можете да видите свој АПИ кључ.

  27 Мицрософт Аццесс пречица на тастатури које морате научити напамет

Крајња тачка АПИ-ја се налази на хттпс://апи.вдзвдз.цом/метасцрапинг. Када упутите захтев, требало би да наведете свој АПИ кључ као заглавље захтева са именом к-апи-кеи и вредношћу која је ваш АПИ кључ.

Такође ћете морати да унесете додатне параметре у тело захтева. Ово су урл, уређај и прокиЦоунтри.

  • УРЛ наводи УРЛ веб-странице чије метаподатке желите да извучете.
  • Уређај специфицира уређај који се користи за посету сајту приликом гребања метаподатака. Ваше опције за уређаје су мобилни или десктоп.
  • Држава проки наводи земљу из које треба поднети захтев пре него што се подаци уклоне. Међутим, прокси земља је премиум функција и може се користити само под плаћеним плановима вдзвдз.

С обзиром да ће параметри бити прослеђени као део тела, захтев мора бити ПОСТ захтев пошто ГЕТ захтеви не могу да садрже метаподатке.

У првој демонстрацији, користићемо цУРЛ услужни програм из командне линије да бисмо захтевали Метасцрапинг АПИ. Да бисте користили цУРЛ, прво ћете морати да га инсталирате.

Користићу Басх терминал. Ово би требало да буде подразумевани терминал на мацОС-у и Линук-у. За Виндовс, мораћете да инсталирате Гит Басх.

Након што је цУРЛ инсталиран, можемо користити команду цУРЛ да направимо захтев. Команди ћемо проследити опције да наведемо параметре захтева: метод захтева, крајњу тачку, тело захтева и заглавља захтева.

curl -X POST 
https://api.techblog.co.rs.com/metascraping  
-d '{ "url": "https://tesla.com" }' 
-H 'Content-Type: application/json' 
-H 'x-api-key: <API_KEY>'

Напомена: Обрнута коса црта након прва три реда вам омогућава да разбијете унос команде у више редова.

Ова команда је специфицирала ХТТП метод као ПОСТ и крајњу тачку као вдзвдз АПИ мета-сцрапинг крајњу тачку.

Такође смо послали тело захтева као ЈСОН објекат са својством УРЛ-а наведеним као хттпс://тесла.цом. На крају, додали смо заглавља која специфицирају тип садржаја тела као ЈСОН и обезбедили АПИ кључ користећи заглавље к-апи-кеи.

Када покренемо ову команду, добијамо следећи излаз:

{"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"}}

То је тачан излаз.

За овај пројекат, креираћемо НодеЈС скрипту за преузимање података из АПИ-ја. То значи да ће вам требати инсталиран НодеЈС. Такође ће вам требати НПМ или било који други менаџер пакета да Ноде управља зависностима пројекта. Такође ћу користити Басх терминал за покретање команди.

Да бисмо користили АПИ у ЈаваСцрипт-у, прво креирамо празну фасциклу пројекта и отворимо је у терминалу.

mkdir metascraping-js && cd metascraping-js

Након овога, можемо креирати датотеку у коју ћемо написати скрипту:

touch index.js

Тада можемо инстанцирати пројекат као Ноде пројекат:

npm init -y

Да бисте користили ЕСМодуле синтаксу унутар наше датотеке, додајте ред „типе“ : „модуле“ у корен датотеке пацкаге.јсон тако да изгледа овако:

{
  "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",
}

Затим ћемо инсталирати пакет ноде-фетцх. Овај пакет пружа функцију преузимања у НодеЈС-у која је слична функцији преузимања претраживача. Ово олакшава прављење ХТТП захтева у НодеЈС-у него коришћење уграђеног хттп модула за прављење захтева.

npm install node-fetch

Када је пакет исправно инсталиран, можемо почети са уређивањем скрипте. Отворите датотеку индек.јс користећи уређивач текста по вашем избору. У мом случају, користићу нано уређивач текста заснован на терминалу.

nano index.js

Уређивање индек.јс датотеке, почињемо увозом функције преузимања, која је подразумевани извоз модула за преузимање чвора.

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
}

Наш метод захтева смо дефинисали као ПОСТ захтев. Такође смо дефинисали два заглавља. Један наводи да тело садржи ЈСОН податке, а други даје АПИ кључ.

  Како научити квантно машинско учење: +11 ресурса

Можете заменити <ВАШ АПИ КЉУЧ> својим стварним АПИ кључем. У пракси, АПИ кључ не би требало да буде чврсто кодиран у датотеку, већ би требало да се учитава помоћу променљивих окружења. На крају, навели смо својство тела као вредност константе тела коју смо раније дефинисали.

Коначно, упућујемо позив за преузимање

fetch('https://api.techblog.co.rs.com/metascraping', options)
    .then(response => response.json())
    .then(json => console.log(json))

Овде смо позвали функцију преузимања, преносећи крајњу тачку АПИ-ја и опције које смо раније дефинисали. Пошто фетцх враћа обећање, приложили смо повратни позив који анализира ЈСОН одговоре користећи тада.

Повратни позив враћа друго обећање, а када се реши, ми ћемо цонсоле.лог() враћени објекат.

Дакле, на крају, наш фајл би требао изгледати овако.

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.techblog.co.rs.com/metascraping', options)
    .then(response => response.json())
    .then(json => console.log(json))

Да бисте покренули скрипту, сачувајте измене и затворите нано или уређивач текста који користите, а затим унесите следећу команду:

node .

Требало би да добијете следеће метаподатке:

{
  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'
  }
}

Коришћење вдзвдз АПИ-ја са ПХП-ом

Да бисте користили вдзвдз Метасцрапинг АПИ, прво проверите да ли су ПХП и Цомпосер инсталирани на вашој локалној машини.

За почетак креирајте и отворите фасциклу пројекта.

mkdir metascraping-php && cd metascraping-php

Затим инсталирајте ГуззлеХТТП. Гуззле је један од многих ПХП клијената које можете користити са вдзвдз АПИ-јем.

composer require guzzlehttp/guzzle

Када се Гуззле инсталира, можемо креирати скрипту са

touch script.php

Онда можемо почети да пишемо код. Користећи уређивач текста по вашем избору, отворите датотеку сцрипт.пхп. У мом случају, користићу нано који је уређивач текста заснован на терминалу.

nano script.php

Унутар скрипте убацујемо стандардни ПХП

<?php
    // All code goes here
?>

Сада да бисте учитали екстензије, увезите класе Рекуест и Цлиент из Гуззле-а. Овај код би требало да буде написан између које смо раније написали.

require_once('vendor/autoload.php');

use GuzzleHttpClient;
use GuzzleHttpPsr7Request;

Затим можемо креирати клијента тако што ћемо инстанцирати класу ГуззлеХттпЦлиент

$client = new GuzzleHttpClient();

Након тога можемо дефинисати заглавља за захтев. За овај конкретан захтев, обезбедићемо два заглавља, једно које наводи да је тип садржаја тела ЈСОН, а друго које садржи наш АПИ кључ.

$headers = [
    'x-api-key' => <YOUR API KEY HERE>,
    'Content-Type' => 'application/json'
];

Замените <ВАШ АПИ КЉУЧ ОВДЕ> својим стварним АПИ кључем са вдзвдз АПИ контролне табле.

  Шта је бацкдоор и како спречити бацкдоор вирусне нападе?

Затим можемо дефинисати тело. У нашем случају, тело ће бити ЈСОН стринг са УРЛ-ом својства постављеном на „хттпс://твиттер.цом“

$body = json_encode([
    "url" => "https://twitter.com"
]);

Да бисмо креирали захтев, инстанцирамо класу захтева коју смо раније увезли, прослеђујући метод захтева, крајњу тачку, заглавља и тело захтева.

$request = new Request('POST', 'https://api.techblog.co.rs.com/metascraping', $headers, $body);

Затим користимо клијента да пошаљемо захтев.

$response = $client->sendAsync($request)->wait();

Након тога можемо издвојити тело захтева и одштампати га на конзоли

echo $response->getBody();

Ако сте исправно копирали код, датотека сцрипт.пхп би требало да изгледа овако

<?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.techblog.co.rs.com/metascraping', $headers, $body);

	$response = $client->sendAsync($request)->wait();

	echo $response->getBody();
?>

Сачувајте скрипту, затворите је и покрените је користећи

php script.php

Требало би да добијете следећи излаз:

{
    "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"
     }
}

Завршне речи

Овај водич је прошао кроз различите начине коришћења вдзвдз Метасцрапинг АПИ-ја.

Метасцрапинг АПИ вам такође омогућава да обезбедите више параметара од само УРЛ-а. Један од таквих параметара је прокси параметар, коме се може приступити само са вдзвдз АПИ премиум планом. Без обзира на то, вдзвдз АПИ остаје довољно моћан за многе употребе.

Погледајте званичну документацију вдзвдз АПИ-ја за више информација.