Πώς να εξαγάγετε μεταδεδομένα ιστότοπου χρησιμοποιώντας το grtechpc.org Meta Scraping API

Γενικά, το web scraping εξάγει δεδομένα από έναν ιστότοπο από το HTML που παράγεται κατά τη φόρτωση μιας ιστοσελίδας.

Το Metascraping εξάγει τα μεταδεδομένα της ιστοσελίδας από τις μετα-ετικέτες μιας ιστοσελίδας.

Τα μεταδεδομένα μιας ιστοσελίδας είναι πληροφορίες σχετικά με τη σελίδα αλλά όχι το περιεχόμενο της σελίδας. Για παράδειγμα, τα μεταδεδομένα μπορεί να περιλαμβάνουν το όνομα του συγγραφέα, τον τίτλο και την περιγραφή της ιστοσελίδας.

Βοηθά τους χρήστες και τις μηχανές αναζήτησης να κατανοήσουν τι είναι η σελίδα. Η απόξεση μεταδεδομένων επιτρέπει στον χρήστη να συλλέγει γρήγορα πληροφορίες σχετικά με ιστοσελίδες σε λιγότερο χρόνο.

Μπορούν να χρησιμοποιηθούν διάφορες προσεγγίσεις για τη διάλυση ιστοσελίδων για τα μεταδεδομένα τους, συμπεριλαμβανομένης της μη αυτόματης απόξεσης, της χρήσης βιβλιοθήκης ή της χρήσης ενός API όπως το grtechpc.org Metascraping API.

Πολλοί τρόποι για να σκοτώσετε μια γάτα

Για να διαγράψετε με μη αυτόματο τρόπο, μπορείτε να ανοίξετε μια ιστοσελίδα χρησιμοποιώντας το Chrome DevTools και να εξαγάγετε τα μεταδεδομένα από την καρτέλα Στοιχεία. Ωστόσο, αυτό το εγχειρίδιο, είναι επαναλαμβανόμενο και κουραστικό όταν έχετε να κάνετε με πολλές σελίδες. Μπορούμε να αυτοματοποιήσουμε την εργασία χρησιμοποιώντας πολλαπλές προσεγγίσεις:

Η πρώτη προσέγγιση είναι να γράψετε τον κώδικα από την αρχή. Σε αυτήν την προσέγγιση, κάνετε ένα αίτημα HTTP στον ιστότοπο του οποίου τα μεταδεδομένα θέλετε να εξαγάγετε. Στη συνέχεια, μπορείτε να αναλύσετε την απάντηση HTML εξάγοντας δεδομένα από τις μετα-ετικέτες χρησιμοποιώντας κανονικές εκφράσεις ή αντιστοίχιση μοτίβων. Ωστόσο, αυτή η προσέγγιση ανακαλύπτει εκ νέου τον τροχό καθώς θα ξοδέψετε χρόνο για να ξαναγράψετε τον υπάρχοντα κώδικα.

Η δεύτερη προσέγγιση είναι να χρησιμοποιήσετε μια βιβλιοθήκη σε όποια γλώσσα προγραμματισμού προτιμάτε. Αυτό σας επιτρέπει να αφαιρέσετε τη λεπτομέρεια υλοποίησης και διατηρεί τα πράγματα απλά. Ωστόσο, εάν η γλώσσα προγραμματισμού της επιλογής σας δεν διαθέτει κατάλληλη βιβλιοθήκη ή ο συγκεκριμένος χρόνος εκτέλεσης που χρησιμοποιείτε δεν υποστηρίζει τη βιβλιοθήκη, τότε δεν μπορείτε να τη χρησιμοποιήσετε.

Η τρίτη προσέγγιση είναι να χρησιμοποιήσετε ένα API όπως το grtechpc.org Metascraping API. Αυτή η προσέγγιση είναι ιδανική γιατί σας δίνει μια ενιαία διεπαφή ανεξάρτητα από τη γλώσσα προγραμματισμού σας. Μπορεί να χρησιμοποιηθεί σε οποιαδήποτε γλώσσα, εφόσον υποστηρίζει την υποβολή αιτημάτων HTTP.

Αυτό το άρθρο θα δείξει πώς να χρησιμοποιήσετε το grtechpc.org Metascraping API με cURL, PHP και JavaScript(NodeJS).

Λόγω των μειονεκτημάτων άλλων προσεγγίσεων, τα πλεονεκτήματα της χρήσης του grtechpc.org API είναι:

  • Είναι αγνωστικιστικό περιβάλλον γλώσσας και χρόνου εκτέλεσης.
  • Αποφεύγετε να επανεφεύρετε τον τροχό και ξοδεύετε λιγότερο χρόνο γράφοντας κώδικα.
  • Μπορείτε να ξύσετε πολλούς ιστότοπους αποτελεσματικά (σε λίγα δευτερόλεπτα).
  • Είναι απίστευτα εύκολο στη χρήση.
  • Μπορείτε να το χρησιμοποιήσετε δωρεάν.

Ξεκινώντας Χρήση του API grtechpc.org

Για να χρησιμοποιήσετε το grtechpc.org API, θα χρειαστείτε ένα κλειδί API. Για να αποκτήσετε έναν, μεταβείτε στον ιστότοπο grtechpc.org και δημιουργήστε έναν δωρεάν λογαριασμό. Αφού δημιουργήσετε τον λογαριασμό σας, συνδεθείτε στον πίνακα ελέγχου. Από τον πίνακα εργαλείων, θα πρέπει να μπορείτε να δείτε το κλειδί API σας.

  Πώς να ανακτήσετε το διαγραμμένο πρόχειρο στο Outlook 365

Το τελικό σημείο API βρίσκεται στη διεύθυνση https://api.grtechpc.org.com/metascraping. Όταν υποβάλλετε ένα αίτημα, θα πρέπει να παρέχετε το κλειδί API ως κεφαλίδα αιτήματος με το όνομα x-api-key και την τιμή να είναι το κλειδί API σας.

Θα χρειαστεί επίσης να μεταβιβάσετε πρόσθετες παραμέτρους στο σώμα αιτήματος. Αυτά είναι το url, η συσκευή και η χώρα μεσολάβησης.

  • Η διεύθυνση URL καθορίζει τη διεύθυνση URL της ιστοσελίδας της οποίας τα μεταδεδομένα θέλετε να διαγράψετε.
  • Η συσκευή καθορίζει τη συσκευή που χρησιμοποιείται για επίσκεψη στον ιστότοπο κατά την απόξεση μεταδεδομένων. Οι επιλογές σας για συσκευές είναι φορητές ή επιτραπέζιοι.
  • Η χώρα μεσολάβησης καθορίζει τη χώρα από την οποία πρέπει να υποβληθεί το αίτημα πριν από την απόξεση των δεδομένων. Η χώρα μεσολάβησης, ωστόσο, είναι μια δυνατότητα premium και μπορεί να χρησιμοποιηθεί μόνο στα προγράμματα επί πληρωμή grtechpc.org.

Δεδομένου ότι οι παράμετροι θα μεταβιβαστούν ως μέρος του σώματος, το αίτημα πρέπει να είναι αίτημα POST καθώς τα αιτήματα GET δεν μπορούν να περιέχουν μεταδεδομένα.

Στην πρώτη επίδειξη, θα χρησιμοποιήσουμε το βοηθητικό πρόγραμμα cURL από τη γραμμή εντολών για να ζητήσουμε το API Metascraping. Για να χρησιμοποιήσετε το cURL, θα πρέπει πρώτα να το εγκαταστήσετε.

Θα χρησιμοποιήσω ένα τερματικό Bash. Αυτό θα πρέπει να είναι το προεπιλεγμένο τερματικό σε macOS και Linux. Για Windows, θα πρέπει να εγκαταστήσετε το Git Bash.

Αφού εγκατασταθεί το cURL, μπορούμε να χρησιμοποιήσουμε την εντολή cURL για να υποβάλουμε το αίτημα. Θα περάσουμε επιλογές στην εντολή για να καθορίσουμε τις παραμέτρους αιτήματος: τη μέθοδο αιτήματος, το τελικό σημείο, το σώμα του αιτήματος και τις κεφαλίδες αιτήματος.

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

Σημείωση: Η ανάστροφη κάθετο μετά τις τρεις πρώτες γραμμές σάς επιτρέπει να σπάσετε την είσοδο εντολών σε πολλές γραμμές.

Αυτή η εντολή καθόρισε τη μέθοδο HTTP ως POST και το τελικό σημείο ως τελικό σημείο μετα-απόξεσης API grtechpc.org.

Στείλαμε επίσης το σώμα του αιτήματος ως αντικείμενο JSON με μια ιδιότητα URL που προσδιορίζεται ως https://tesla.com. Τέλος, προσθέσαμε τις κεφαλίδες που καθορίζουν τον τύπο περιεχομένου του σώματος ως JSON και παρέχουμε το κλειδί API χρησιμοποιώντας την κεφαλίδα του κλειδιού x-api.

Όταν εκτελούμε αυτήν την εντολή, παίρνουμε την ακόλουθη έξοδο:

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

Αυτή είναι η σωστή έξοδος.

Για αυτό το έργο, θα δημιουργήσουμε ένα σενάριο NodeJS για την ανάκτηση δεδομένων από το API. Αυτό σημαίνει ότι θα χρειαστεί να εγκαταστήσετε το NodeJS. Θα χρειαστείτε επίσης το NPM ή οποιονδήποτε άλλο διαχειριστή πακέτων για το Node για τη διαχείριση των εξαρτήσεων του έργου. Θα χρησιμοποιήσω επίσης το τερματικό Bash για την εκτέλεση εντολών.

Για να χρησιμοποιήσουμε το API σε JavaScript, δημιουργούμε πρώτα έναν κενό φάκελο έργου και τον ανοίγουμε σε ένα τερματικό.

mkdir metascraping-js && cd metascraping-js

Μετά από αυτό, μπορούμε να δημιουργήσουμε το αρχείο όπου θα γράψουμε το σενάριο:

touch index.js

Στη συνέχεια, μπορούμε να δημιουργήσουμε το έργο ως έργο κόμβου:

npm init -y

Για να χρησιμοποιήσετε τη σύνταξη ESModule μέσα στο αρχείο μας, προσθέστε τη γραμμή “type” : “module” στη ρίζα του αρχείου package.json έτσι ώστε να μοιάζει με αυτό:

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

Στη συνέχεια, θα εγκαταστήσουμε το πακέτο node-fetch. Αυτό το πακέτο παρέχει μια λειτουργία ανάκτησης στο NodeJS που είναι παρόμοια με τη λειτουργία ανάκτησης του προγράμματος περιήγησης. Αυτό διευκολύνει την υποβολή αιτημάτων HTTP στο NodeJS παρά τη χρήση της ενσωματωμένης λειτουργικής μονάδας http για την υποβολή αιτημάτων.

npm install node-fetch

Όταν το πακέτο εγκατασταθεί σωστά, μπορούμε να ξεκινήσουμε την επεξεργασία του σεναρίου. Ανοίξτε το αρχείο index.js χρησιμοποιώντας ένα πρόγραμμα επεξεργασίας κειμένου της επιλογής σας. Στην περίπτωσή μου, θα χρησιμοποιήσω το πρόγραμμα επεξεργασίας κειμένου nano που βασίζεται σε τερματικό.

nano index.js

Επεξεργαζόμενοι το αρχείο index.js, ξεκινάμε εισάγοντας τη συνάρτηση fetch, η οποία είναι η προεπιλεγμένη εξαγωγή της λειτουργικής μονάδας node-fetch.

import fetch from 'node-fetch'

Στη συνέχεια, θα ορίσουμε το σώμα του αιτήματός μας. Αυτό θα είναι μια συμβολοσειρά JSON με ιδιότητα url. Η τιμή της ιδιότητας url είναι η ιστοσελίδα της οποίας τα μεταδεδομένα θέλουμε να λάβουμε.

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
}

Έχουμε ορίσει τη μέθοδο αιτήματός μας ως αίτημα POST. Ορίσαμε επίσης δύο κεφαλίδες. Το ένα καθορίζει ότι το σώμα περιέχει δεδομένα JSON και το άλλο παρέχει το κλειδί API.

  Ξεκινήστε τα έργα δημιουργώντας ένα περίγραμμα και οργανώνοντας το περιεχόμενό σας

Μπορείτε να αντικαταστήσετε το με το πραγματικό κλειδί API σας. Στην πράξη, το κλειδί API δεν πρέπει να είναι κωδικοποιημένο στο αρχείο, αλλά θα πρέπει να φορτώνεται χρησιμοποιώντας περιβαλλοντικές μεταβλητές. Τέλος, προσδιορίσαμε την ιδιότητα του σώματος ως την τιμή της σταθεράς σώματος που ορίσαμε νωρίτερα.

Τέλος, κάνουμε την κλήση για ανάκτηση

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

Εδώ, καλέσαμε τη συνάρτηση fetch, περνώντας στο τελικό σημείο API και τις επιλογές που ορίσαμε νωρίτερα. Εφόσον η ανάκτηση επιστρέφει μια υπόσχεση, επισυνάψαμε μια επανάκληση που αναλύει τις απαντήσεις JSON χρησιμοποιώντας τότε.

Η επανάκληση επιστρέφει μια άλλη υπόσχεση, και όταν επιλυθεί, θα μεταφέρουμε console.log() το επιστρεφόμενο αντικείμενο.

Έτσι, τελικά, το αρχείο μας θα πρέπει να μοιάζει με αυτό.

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

Για να εκτελέσετε το σενάριο, αποθηκεύστε τις επεξεργασίες και κλείστε το nano ή το πρόγραμμα επεξεργασίας κειμένου που χρησιμοποιείτε και, στη συνέχεια, πληκτρολογήστε την ακόλουθη εντολή:

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

Χρήση του grtechpc.org API με PHP

Για να χρησιμοποιήσετε το grtechpc.org Metascraping API, πρώτα βεβαιωθείτε ότι έχετε εγκαταστήσει PHP και Composer στον τοπικό σας υπολογιστή.

  Πώς να λάβετε ειδοποίηση στάσης λεωφορείου ή τρένου στο iPhone σας

Για να ξεκινήσετε, δημιουργήστε και ανοίξτε το φάκελο του έργου.

mkdir metascraping-php && cd metascraping-php

Στη συνέχεια, εγκαταστήστε το GuzzleHTTP. Το Guzzle είναι ένας από τους πολλούς πελάτες PHP που μπορείτε να χρησιμοποιήσετε με το grtechpc.org API.

composer require guzzlehttp/guzzle

Μόλις εγκατασταθεί το Guzzle, μπορούμε να δημιουργήσουμε ένα σενάριο με

touch script.php

Τότε μπορούμε να αρχίσουμε να γράφουμε τον κώδικα. Χρησιμοποιώντας ένα πρόγραμμα επεξεργασίας κειμένου της επιλογής σας, ανοίξτε το αρχείο script.php. Στην περίπτωσή μου, θα χρησιμοποιήσω το nano που είναι ένα πρόγραμμα επεξεργασίας κειμένου που βασίζεται σε τερματικό.

nano script.php

Μέσα στο σενάριο, εισάγουμε boiler-plate PHP

<?php
    // All code goes here
?>

Τώρα για να φορτώσετε τις επεκτάσεις, εισαγάγετε τις κλάσεις Request και Client από το Guzzle. Αυτός ο κώδικας πρέπει να γραφτεί μεταξύ των που γράψαμε πριν.

require_once('vendor/autoload.php');

use GuzzleHttpClient;
use GuzzleHttpPsr7Request;

Στη συνέχεια, μπορούμε να δημιουργήσουμε έναν πελάτη, δημιουργώντας την κλάση GuzzleHttpClient

$client = new GuzzleHttpClient();

Στη συνέχεια, μπορούμε να ορίσουμε κεφαλίδες για το αίτημα. Για αυτό το συγκεκριμένο αίτημα, θα παρέχουμε δύο κεφαλίδες, η μία που καθορίζει ότι ο τύπος περιεχομένου του σώματος είναι JSON και η άλλη περιέχει το κλειδί API μας.

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

Αντικαταστήστε το με το πραγματικό κλειδί API από τον πίνακα εργαλείων του grtechpc.org API.

Τότε, μπορούμε να ορίσουμε το σώμα. Στην περίπτωσή μας, το σώμα θα είναι μια συμβολοσειρά JSON με τη διεύθυνση url της ιδιότητας να έχει οριστεί σε “https://twitter.com”

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

Για να δημιουργήσουμε ένα αίτημα, εγκαινιάζουμε την κλάση αιτήματος που εισαγάγαμε νωρίτερα, περνώντας τη μέθοδο αιτήματος, το τελικό σημείο, τις κεφαλίδες και το σώμα αιτήματος.

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

Στη συνέχεια, χρησιμοποιούμε τον πελάτη για να στείλουμε το αίτημα.

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

Μετά, μπορούμε να εξαγάγουμε το σώμα του αιτήματος και να το εκτυπώσουμε στην κονσόλα

echo $response->getBody();

Εάν έχετε αντιγράψει σωστά τον κώδικα, το αρχείο script.php θα πρέπει να μοιάζει με αυτό

<?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.grtechpc.org.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"
     }
}

Τελικές Λέξεις

Αυτός ο οδηγός παρουσίασε διάφορους τρόπους για να καταναλώσετε το grtechpc.org Metascraping API.

Το API Metascraping σάς επιτρέπει επίσης να παρέχετε περισσότερες παραμέτρους από τη διεύθυνση URL. Μια τέτοια παράμετρος είναι η παράμετρος διακομιστή μεσολάβησης, η πρόσβαση στην οποία είναι δυνατή μόνο με το πρόγραμμα premium του grtechpc.org API. Ανεξάρτητα από αυτό, το grtechpc.org API παραμένει αρκετά ισχυρό για πολλές χρήσεις.

Δείτε την επίσημη τεκμηρίωση του grtechpc.org API για περισσότερες πληροφορίες.