Hvordan trekke ut metadata på nettstedet ved hjelp av tipsbilk.net Meta Scraping API

Generelt er nettskraping å trekke ut data fra et nettsted fra HTML-en som produseres når en nettside lastes.

Metaskraping er å trekke ut nettsidens metadata fra metakodene til en nettside.

Metadataene til en nettside er informasjon om siden, men ikke sidens innhold. Metadataene kan for eksempel inkludere forfatterens navn, tittel og nettsidens beskrivelse.

Det hjelper brukere og søkemotorer å forstå hva siden handler om. Skraping av metadata lar en bruker raskt samle informasjon om nettsider på kortere tid.

Flere tilnærminger kan brukes til å skrape nettsider for deres metadata, inkludert skraping manuelt, ved hjelp av et bibliotek eller bruk av en API som tipsbilk.net Metascraping API.

Mange måter å drepe en katt på

For å skrote manuelt, kan man åpne en nettside ved hjelp av Chrome DevTools og trekke ut metadataene fra Elementer-fanen. Imidlertid er denne håndboken repeterende og kjedelig når du har å gjøre med flere sider. Vi kan automatisere oppgaven ved å bruke flere tilnærminger:

Den første tilnærmingen er å skrive koden fra bunnen av. I denne tilnærmingen sender du en HTTP-forespørsel til nettstedet hvis metadata du vil trekke ut. Etterpå kan du analysere HTML-responsen som trekker ut data fra metakodene ved å bruke regulære uttrykk eller mønstertilpasning. Denne tilnærmingen gjenoppfinner imidlertid hjulet ettersom du vil bruke tid på å skrive om eksisterende kode.

Den andre tilnærmingen er å bruke et bibliotek i det programmeringsspråket du foretrekker. Dette lar deg abstrahere over implementeringsdetaljene og holder ting enkelt. Men hvis programmeringsspråket du velger ikke har et passende bibliotek eller den bestemte kjøretiden du bruker ikke støtter biblioteket, kan du ikke bruke det.

Den tredje tilnærmingen er å bruke en API som tipsbilk.net Metascraping API. Denne tilnærmingen er ideell fordi den gir deg et enhetlig grensesnitt uavhengig av ditt programmeringsspråk. Den kan brukes på alle språk så lenge den støtter HTTP-forespørsler.

Denne artikkelen vil demonstrere hvordan du bruker tipsbilk.net Metascraping API med cURL, PHP og JavaScript(NodeJS).

På grunn av ulempene med andre tilnærminger, er fordelene ved å bruke tipsbilk.net API:

  • Det er språk- og kjøretidsmiljøagnostisk.
  • Du slipper å finne opp hjulet på nytt og bruker mindre tid på å skrive kode.
  • Du kan skrape flere nettsteder effektivt (i løpet av sekunder).
  • Den er utrolig enkel å bruke.
  • Du kan bruke den gratis.

Komme i gang Bruke tipsbilk.net API

For å bruke tipsbilk.net API, trenger du en API-nøkkel. For å få en, gå til tipsbilk.net-nettstedet og opprett en gratis konto. Etter å ha opprettet kontoen din, logg inn på dashbordet. Fra dashbordet skal du kunne se API-nøkkelen din.

  En omfattende guide til CryptoPunks NFT-er

API-endepunktet er plassert på https://api.tipsbilk.net.com/metascraping. Når du sender en forespørsel, bør du oppgi API-nøkkelen som en forespørselsoverskrift med navnet x-api-key og verdien er API-nøkkelen din.

Du må også angi flere parametere i forespørselsteksten. Dette er url, enhet og proxyCountry.

  • URL spesifiserer URL-en til nettsiden hvis metadata du vil skrape.
  • Enhet spesifiserer enheten som brukes til å besøke nettstedet ved skraping av metadata. Alternativene dine for enheter er mobil eller stasjonær.
  • Fullmaktsland spesifiserer landet som forespørselen skal sendes fra før dataene skrapes. Proxy-landet er imidlertid en premium-funksjon og kan bare brukes under de betalte tipsbilk.net-planene.

Gitt at parametere vil bli sendt som en del av kroppen, må forespørselen være en POST-forespørsel siden GET-forespørsler ikke kan inneholde metadata.

I den første demonstrasjonen vil vi bruke cURL-verktøyet fra kommandolinjen for å be om Metascraping API. For å bruke cURL må du installere det først.

Jeg kommer til å bruke en Bash-terminal. Dette bør være standardterminalen på macOS og Linux. For Windows må du installere Git Bash.

Etter at cURL er installert, kan vi bruke cURL-kommandoen til å gjøre forespørselen. Vi vil gi alternativer til kommandoen for å spesifisere forespørselsparametrene: forespørselsmetoden, endepunktet, forespørselsteksten og forespørselshodene.

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

NB: Omvendt skråstrek etter de tre første linjene lar deg dele kommandoen inn i flere linjer.

Denne kommandoen spesifiserte HTTP-metoden som POST og endepunktet som tipsbilk.net API-meta-scraping-endepunktet.

Vi sendte også forespørselsteksten som et JSON-objekt med en URL-egenskap spesifisert som https://tesla.com. Til slutt la vi til overskriftene som spesifiserer kroppsinnholdstypen som JSON og ga API-nøkkelen ved hjelp av x-api-key-overskriften.

Når vi kjører denne kommandoen, får vi følgende utgang:

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

Det er riktig utgang.

For dette prosjektet vil vi lage et NodeJS-skript for å hente data fra API. Dette betyr at du trenger NodeJS installert. Du vil også trenge NPM eller en hvilken som helst annen pakkebehandler for at Node skal administrere prosjektets avhengigheter. Jeg kommer også til å bruke Bash-terminalen til å kjøre kommandoer.

For å bruke API i JavaScript, oppretter vi først en tom prosjektmappe og åpner den i en terminal.

mkdir metascraping-js && cd metascraping-js

Etter dette kan vi lage filen der vi skal skrive skriptet:

touch index.js

Deretter kan vi instansiere prosjektet som et nodeprosjekt:

npm init -y

For å bruke ESModule-syntaks i filen vår, legg til linjen «type» : «module» til roten av package.json-filen slik at den ser slik ut:

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

Deretter vil vi installere node-fetch-pakken. Denne pakken gir en hentefunksjon i NodeJS som ligner på nettleserens hentefunksjon. Dette gjør det enklere å lage HTTP-forespørsler i NodeJS enn å bruke den innebygde http-modulen for å lage forespørsler.

npm install node-fetch

Når pakken er riktig installert, kan vi begynne å redigere skriptet. Åpne index.js-filen ved å bruke et tekstredigeringsprogram du velger. I mitt tilfelle kommer jeg til å bruke den terminalbaserte nanotekstredigereren.

nano index.js

Ved å redigere index.js-filen starter vi med å importere hentefunksjonen, som er standard eksport av nodehentingsmodulen.

import fetch from 'node-fetch'

Deretter vil vi definere hoveddelen av forespørselen vår. Dette kommer til å være en JSON-streng med en url-egenskap. Verdien til url-egenskapen er nettsiden hvis metadata vi ønsker å få.

const body = JSON.stringify({ url: 'https://spacex.com' });

Deretter kan vi definere forespørselsalternativene vi vil sende til hentefunksjonen når vi til slutt kaller den.

const options = {
    method: 'POST',
    headers: {
        'Content-Type': 'application/json',
        'x-api-key': <YOUR API KEY here>
    },
    body: body
}

Vi har definert vår forespørselsmetode som en POST-forespørsel. Vi definerte også to overskrifter. Den ene spesifiserer at kroppen inneholder JSON-data, og den andre gir API-nøkkelen.

  Nybegynnerveiledningen til Google Forms

Du kan erstatte med din faktiske API-nøkkel. I praksis skal ikke API-nøkkelen være hardkodet inn i filen, men skal lastes inn ved hjelp av miljøvariabler. Til slutt spesifiserte vi kroppsegenskapen som verdien av kroppskonstanten vi definerte tidligere.

Til slutt ringer vi for å hente

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

Her har vi kalt henting-funksjonen, og sender inn API-endepunktet og alternativene vi definerte tidligere. Siden henting returnerer et løfte, har vi lagt ved en tilbakeringing som analyserer JSON-svarene med deretter.

Tilbakeringingen returnerer et annet løfte, og når det løser seg, går vi til console.log() det returnerte objektet.

Så til syvende og sist skal filen vår se slik ut.

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

For å kjøre skriptet, lagre redigeringene og lukk nano eller tekstredigeringsprogrammet du bruker, og skriv deretter inn følgende kommando:

node .

Du bør få følgende metadata:

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

Bruke tipsbilk.net API med PHP

For å bruke tipsbilk.net Metascraping API, sørg først for at du har PHP og Composer installert på din lokale maskin.

For å begynne, opprette og åpne prosjektmappen.

mkdir metascraping-php && cd metascraping-php

Installer deretter GuzzleHTTP. Guzzle er en av de mange PHP-klientene du kan bruke med tipsbilk.net API.

composer require guzzlehttp/guzzle

Når Guzzle er installert, kan vi lage et skript med

touch script.php

Så kan vi begynne å skrive koden. Åpne script.php-filen ved å bruke et tekstredigeringsprogram du ønsker. I mitt tilfelle skal jeg bruke nano som er en terminalbasert tekstredigerer.

nano script.php

Inne i skriptet setter vi inn boiler-plate PHP

<?php
    // All code goes here
?>

Nå for å laste utvidelsene, importer forespørsels- og klientklassene fra Guzzle. Denne koden skal skrives mellom vi skrev før.

require_once('vendor/autoload.php');

use GuzzleHttpClient;
use GuzzleHttpPsr7Request;

Deretter kan vi opprette en klient ved å instansiere GuzzleHttpClient-klassen

$client = new GuzzleHttpClient();

Etterpå kan vi definere overskrifter for forespørselen. For denne spesielle forespørselen vil vi gi to overskrifter, en som spesifiserer at innholdstypen til kroppen er JSON og den andre inneholder API-nøkkelen vår.

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

Erstatt med din faktiske API-nøkkel fra tipsbilk.net API-dashboard.

  Hvordan finne og erstatte spesialtegn i Microsoft Word

Deretter kan vi definere kroppen. I vårt tilfelle kommer kroppen til å være en JSON-streng med egenskaps-url satt til «https://twitter.com»

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

For å opprette en forespørsel instansierer vi forespørselsklassen vi importerte tidligere, og sender inn forespørselsmetoden, endepunktet, overskriftene og forespørselsteksten.

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

Deretter bruker vi klienten til å sende forespørselen.

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

Etterpå kan vi trekke ut forespørselens brødtekst og skrive den ut til konsollen

echo $response->getBody();

Hvis du har kopiert koden riktig, skal script.php-filen se slik ut

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

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

	echo $response->getBody();
?>

Lagre skriptet, lukk det og kjør det med

php script.php

Du bør få følgende utgang:

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

Siste ord

Denne veiledningen gikk gjennom forskjellige måter å bruke tipsbilk.net Metascraping API på.

Metascraping API lar deg også oppgi flere parametere enn bare URL-en. En slik parameter er proxy-parameteren, som kun kan nås med tipsbilk.net API-premieplanen. Uansett forblir tipsbilk.net API kraftig nok til mange bruksområder.

Sjekk ut den offisielle dokumentasjonen til tipsbilk.net API for mer informasjon.

x