Как извлечь метаданные веб-сайта с помощью Geekflare Meta Scraping API
Опубликовано: 2022-11-30В общем, веб-скрапинг — это извлечение данных с веб-сайта из HTML-кода, созданного при загрузке веб-страницы.
Метаскрейпинг — это извлечение метаданных веб-страницы из метатегов веб-страницы.
Метаданные веб-страницы — это информация о странице, но не о ее содержимом. Например, метаданные могут включать имя автора, заголовок и описание веб-страницы.
Это помогает пользователям и поисковым системам понять, о чем страница. Скрапинг метаданных позволяет пользователю быстро собирать информацию о веб-страницах за меньшее время.
Для очистки веб-страниц на предмет их метаданных можно использовать несколько подходов, включая ручную очистку, использование библиотеки или использование API, такого как Geekflare Metascraping API.
Много способов убить кошку
Чтобы удалить вручную, можно открыть веб-страницу с помощью Chrome DevTools и извлечь метаданные на вкладке «Элементы». Тем не менее, это руководство повторяется и утомительно, когда вы имеете дело с несколькими страницами. Мы можем автоматизировать задачу, используя несколько подходов:
Первый подход заключается в написании кода с нуля. В этом подходе вы делаете HTTP-запрос к веб-сайту, чьи метаданные вы хотите извлечь. После этого вы можете проанализировать ответный HTML-код, извлекая данные из метатегов, используя регулярные выражения или сопоставление с образцом. Однако этот подход означает изобретение велосипеда заново, поскольку вы потратите время на переписывание существующего кода.
Второй подход заключается в использовании библиотеки на любом языке программирования, который вы предпочитаете. Это позволяет абстрагироваться от деталей реализации и упрощает задачу. Однако, если выбранный вами язык программирования не имеет подходящей библиотеки или конкретная среда выполнения, которую вы используете, не поддерживает эту библиотеку, вы не можете ее использовать.
Третий подход заключается в использовании API, такого как Geekflare Metascraping API. Этот подход идеален, потому что он дает вам единый интерфейс независимо от вашего языка программирования. Его можно использовать на любом языке, если он поддерживает HTTP-запросы.
В этой статье будет показано, как использовать Geekflare Metascraping API с cURL, PHP и JavaScript (NodeJS).
Почему вы должны использовать Geekflare Metascraping API?
Из-за недостатков других подходов преимущества использования Geekflare API заключаются в следующем:
- Он не зависит от языка и среды выполнения.
- Вы не изобретаете велосипед и тратите меньше времени на написание кода.
- Вы можете эффективно очищать несколько веб-сайтов (за считанные секунды).
- Он невероятно прост в использовании.
- Вы можете использовать его бесплатно.
Начало работы с API Geekflare
Чтобы использовать API Geekflare, вам понадобится ключ API. Чтобы получить его, перейдите на сайт Geekflare и создайте бесплатную учетную запись. После создания учетной записи войдите в панель управления. На панели инструментов вы должны увидеть свой ключ API.

Обзор Geekflare Metascraping API
Конечная точка API находится по адресу https://api.geekflare.com/metascraping
. Когда вы делаете запрос, вы должны указать свой ключ API в качестве заголовка запроса с именем x-api-key
и значением, являющимся вашим ключом API.
Вам также нужно будет передать дополнительные параметры в теле запроса. Это url
, device
и proxyCountry
.
- URL -адрес указывает URL-адрес веб-страницы, чьи метаданные вы хотите очистить.
- Устройство указывает устройство, используемое для посещения сайта при очистке метаданных. Ваши варианты устройств: мобильные или настольные.
- Страна прокси указывает страну, из которой должен быть сделан запрос перед очисткой данных. Однако прокси-страна является премиальной функцией и может использоваться только в рамках платных планов Geekflare.
Учитывая, что параметры будут переданы как часть тела, запрос должен быть запросом POST
, поскольку запросы GET
не могут содержать метаданные.
Использование Geekflare Metascraping API в cURL
В первой демонстрации мы будем использовать утилиту cURL из командной строки для запроса API Metascraping. Чтобы использовать cURL, вам нужно сначала установить его.
Я собираюсь использовать терминал Bash. Это должен быть терминал по умолчанию в macOS и Linux. Для Windows вам нужно будет установить Git Bash.
После установки cURL мы можем использовать команду cURL для выполнения запроса. Мы передадим опции команде, чтобы указать параметры запроса: метод запроса, конечную точку, тело запроса и заголовки запроса.
curl -X POST \ https://api.geekflare.com/metascraping \ -d '{ "url": "https://tesla.com" }' \ -H 'Content-Type: application/json' \ -H 'x-api-key: <API_KEY>'
NB: обратная косая черта после первых трех строк позволяет разбить ввод команды на несколько строк.
Эта команда указала метод HTTP как POST, а конечную точку — как конечную точку метаочистки Geekflare API.
Мы также отправили тело запроса в виде объекта JSON со свойством URL, указанным как https://tesla.com. Наконец, мы добавили заголовки, которые определяют тип содержимого тела как JSON, и предоставили ключ API, используя заголовок x-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"}}
Это правильный вывод.
Использование Geekflare Metascraping API с JavaScript
Для этого проекта мы создадим скрипт NodeJS для получения данных из API. Это означает, что вам понадобится установленный NodeJS. Вам также понадобится NPM или любой другой менеджер пакетов для Node, чтобы управлять зависимостями проекта. Я также собираюсь использовать терминал Bash для запуска команд.
Чтобы использовать API в JavaScript, мы сначала создаем пустую папку проекта и открываем ее в терминале.
mkdir metascraping-js && cd metascraping-js
После этого мы можем создать файл, в котором будем писать скрипт:
touch index.js
Затем мы можем создать экземпляр проекта как проект Node:
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
. Этот пакет предоставляет функцию fetch
в NodeJS, аналогичную функции fetch
в браузере. Это упрощает выполнение 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' });
Затем мы можем определить параметры запроса, которые мы будем передавать функции fetch
, когда мы в конечном итоге вызовем ее.
const options = { method: 'POST', headers: { 'Content-Type': 'application/json', 'x-api-key': <YOUR API KEY here> }, body: body }
Мы определили наш метод запроса как запрос POST
. Мы также определили два заголовка. Один указывает, что тело содержит данные JSON, а другой предоставляет ключ API.
Вы можете заменить <YOUR API KEY> вашим фактическим ключом API. На практике ключ API не должен быть жестко запрограммирован в файле, а должен загружаться с использованием переменных среды. Наконец, мы указали свойство body как значение константы body, которую мы определили ранее.
Наконец, мы делаем вызов для fetch
fetch('https://api.geekflare.com/metascraping', options) .then(response => response.json()) .then(json => console.log(json))
Здесь мы вызвали функцию выборки, передав конечную точку API и параметры, которые мы определили ранее. Поскольку fetch
возвращает обещание, мы прикрепили обратный вызов, который анализирует ответы JSON с помощью then
.
Обратный вызов возвращает другое обещание, и когда оно разрешается, мы собираемся использовать 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.geekflare.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' } }
Использование Geekflare API с PHP
Чтобы использовать Geekflare Metascraping API, сначала убедитесь, что на вашем локальном компьютере установлены PHP и Composer.
Для начала создайте и откройте папку проекта.
mkdir metascraping-php && cd metascraping-php
Затем установите GuzzleHTTP. Guzzle — один из многих PHP-клиентов, которые вы можете использовать с Geekflare API.
composer require guzzlehttp/guzzle
После установки Guzzle мы можем создать скрипт с
touch script.php
Затем мы можем начать писать код. Используя любой текстовый редактор, откройте файл script.php
. В моем случае я собираюсь использовать nano
, текстовый редактор на базе терминала.
nano script.php
Внутри скрипта мы вставляем шаблонный PHP
<?php // All code goes here ?>
Теперь, чтобы загрузить расширения, импортируйте классы Request и Client из Guzzle. Этот код должен быть написан между <?php
и ?>
, которые мы написали ранее.
require_once('vendor/autoload.php'); use GuzzleHttp\Client; use GuzzleHttp\Psr7\Request;
Далее мы можем создать клиента, создав экземпляр класса GuzzleHttp\Client
$client = new GuzzleHttp\Client();
После этого мы можем определить заголовки для запроса. Для этого конкретного запроса мы предоставим два заголовка, один из которых указывает, что тип содержимого тела — JSON, а другой — наш ключ API.
$headers = [ 'x-api-key' => <YOUR API KEY HERE>, 'Content-Type' => 'application/json' ];
Замените <YOUR API KEY HERE>
вашим фактическим ключом API из панели управления API Geekflare.
Затем мы можем определить тело. В нашем случае тело будет строкой JSON с url
-адресом свойства, установленным на "https://twitter.com"
.
$body = json_encode([ "url" => "https://twitter.com" ]);
Чтобы создать запрос, мы создаем экземпляр класса запроса, который мы импортировали ранее, передавая метод запроса, конечную точку, заголовки и тело запроса.
$request = new Request('POST', 'https://api.geekflare.com/metascraping', $headers, $body);
Далее мы используем клиент для отправки запроса.
$response = $client->sendAsync($request)->wait();
После этого мы можем извлечь тело запроса и вывести его в консоль.
echo $response->getBody();
Если вы правильно скопировали код, файл script.php
должен выглядеть так
<?php require_once('vendor/autoload.php'); use GuzzleHttp\Client; use GuzzleHttp\Psr7\Request; $client = new GuzzleHttp\Client(); $headers = [ 'x-api-key' => <YOUR API KEY>, 'Content-Type' => 'application/json' ]; $body = json_encode([ "url" => "https://twitter.com" ]); $request = new Request('POST', 'https://api.geekflare.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" } }
Заключительные слова
В этом руководстве были рассмотрены различные способы использования Geekflare Metascraping API.
API Metascraping также позволяет вам предоставлять больше параметров, чем только URL-адрес. Одним из таких параметров является параметр прокси, к которому можно получить доступ только в премиум-плане Geekflare API. Тем не менее, Geekflare API остается достаточно мощным для многих целей.
Ознакомьтесь с официальной документацией API Geekflare для получения дополнительной информации.