テクノロジー 開発 非公開: メタ スクレイピング API を使用してウェブサイトのメタデータを抽出する方法

メタ スクレイピング API を使用してウェブサイトのメタデータを抽出する方法

一般に、Web スクレイピングは、Web ページの読み込み時に生成される HTML から Web サイトからデータを抽出します。

メタスクレイピングは、Web ページのメタタグから Web ページのメタデータを抽出します。

Web ページのメタデータは、ページに関する情報ですが、ページのコンテンツではありません。たとえば、メタデータには、作成者の名前、タイトル、Web ページの説明が含まれる場合があります。

ユーザーと検索エンジンがページの内容を理解するのに役立ちます。メタデータをスクレイピングすると、ユーザーは Web ページに関する情報を短時間で迅速に収集できます。

Web ページのメタデータをスクラップするには、手動でのスクレイピング、ライブラリの使用、 Metascraping API などの API の使用など、いくつかのアプローチを使用できます。

猫を殺すたくさんの方法

手動でスクラップするには、Chrome DevTools を使用して Web ページを開き、[Elements] タブからメタデータを抽出します。ただし、このマニュアルは、複数のページを扱う場合、繰り返しが多くて退屈です。複数のアプローチを使用してタスクを自動化できます。

最初のアプローチは 、コードを最初から作成することです。このアプローチでは、メタデータを抽出する Web サイトに HTTP リクエストを送信します。その後、正規表現またはパターン マッチングを使用してメタ タグからデータを抽出して、応答 HTML を解析できます。ただし、このアプローチは既存のコードの書き換えに時間を費やすことになるため、車輪の再発明となります。

2 番目のアプローチ は、好みのプログラミング言語でライブラリを使用することです。これにより、実装の詳細を抽象化し、物事をシンプルに保つことができます。ただし、選択したプログラミング言語に適切なライブラリがない場合、または使用している特定のランタイムがそのライブラリをサポートしていない場合は、その言語を使用できません。

3 番目のアプローチ は、 Metascraping API のような API を使用することです。このアプローチは、プログラミング言語に関係なく統一されたインターフェイスを提供するため、理想的です。 HTTP リクエストの作成をサポートしている限り、どの言語でも使用できます。

この記事では、cURL、PHP、および JavaScript(NodeJS) で Metascraping API を使用する方法を説明します。

メタ スクレイピング API を使用してウェブサイトのメタデータを抽出する方法
メタ スクレイピング API を使用してウェブサイトのメタデータを抽出する方法

Metascraping API を使用する理由は何ですか?

他のアプローチには欠点があるため、 API を使用する利点は次のとおりです。

  • 言語やランタイム環境に依存しません。
  • 車輪の再発明を避けることができ、コードの作成に費やす時間が短縮されます。
  • 複数の Web サイトを効率的に (数秒で) スクレイピングできます。
  • 使い方は驚くほど簡単です。
  • 無料でご利用いただけます。
メタ スクレイピング API を使用してウェブサイトのメタデータを抽出する方法
メタ スクレイピング API を使用してウェブサイトのメタデータを抽出する方法

API の使用を開始する

API を使用するには、API キーが必要です。取得するには、 Siterelic にアクセスして無料アカウントを作成します。アカウントを作成したら、 ダッシュボード にログインします。ダッシュボードから API キーを確認できるはずです。

-ダッシュボード-1
-ダッシュボード-1
メタ スクレイピング API を使用してウェブサイトのメタデータを抽出する方法
メタ スクレイピング API を使用してウェブサイトのメタデータを抽出する方法

メタスクレイピング API の概要

API エンドポイントは https://api..com/metascraping にあります。リクエストを行うときは、 x-api-key 名前と API キーの値を持つリクエスト ヘッダーとして API キーを指定する必要があります。

リクエスト本文で追加のパラメーターを渡すことも必要です。これらは url device 、および proxyCountry です。

  • URL に は、メタデータをスクレイピングする Web ページの URL を指定します。
  • デバイスは、 メタデータをスクレイピングするときにサイトにアクセスするために使用されるデバイスを指定します。デバイスのオプションはモバイルまたはデスクトップです。
  • プロキシ国は、 データがスクレイピングされる前にリクエストを行う必要がある国を指定します。ただし、代理国はプレミアム機能であり、 の有料プランでのみ使用できます。

パラメーターが本文の一部として渡される場合、 GET リクエストにはメタデータを含めることができないため、リクエストは POST リクエストである必要があります。

メタ スクレイピング API を使用してウェブサイトのメタデータを抽出する方法
メタ スクレイピング API を使用してウェブサイトのメタデータを抽出する方法

cURL での メタスクレイピング API の使用

最初のデモンストレーションでは、コマンド ラインから cURL ユーティリティを使用して Metascraping API をリクエストします。 cURL を使用するには、 まず cURL をインストールする 必要があります。

Bash ターミナルを使用するつもりです。これは、macOS および Linux のデフォルトのターミナルである必要があります。 Windows の場合は、Git Bash をインストールする必要があります。

cURL がインストールされたら、cURL コマンドを使用してリクエストを行うことができます。コマンドにオプションを渡して、リクエスト パラメーター (リクエスト メソッド、エンドポイント、リクエスト本文、リクエスト ヘッダー) を指定します。

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

注意: 最初の 3 行の後のバックスラッシュを使用すると、コマンド入力を複数行に分割できます。

このコマンドは、HTTP メソッドを POST として指定し、エンドポイントを API メタスクレイピング エンドポイントとして指定しました。

また、リクエスト本文を、https://tesla.com として指定された URL プロパティを持つ JSON オブジェクトとして送信しました。最後に、本文のコンテンツ タイプを JSON として指定するヘッダーを追加し、 x-api-key ヘッダーを使用して 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"}}

それが正しい出力です。

JavaScript での メタスクレイピング API の使用

このプロジェクトでは、API からデータをフェッチする NodeJS スクリプトを作成します。これは、NodeJS をインストールする必要があることを意味します。プロジェクトの依存関係を管理するには、NPM または Node 用のその他のパッケージ マネージャーも必要です。また、Bash ターミナルを使用してコマンドを実行するつもりです。

JavaScript で API を使用するには、まず空のプロジェクト フォルダーを作成し、それをターミナルで開きます。

 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 ファイルを編集して、まず、 node-fetch モジュールのデフォルトのエクスポートである fetch 関数をインポートします。

 import fetch from 'node-fetch'

次に、リクエストの本文を定義します。これは、 url プロパティを持つ JSON 文字列になります。 url プロパティの値は、メタデータを取得する Web ページです。

 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 リクエストとして定義しました。 2 つのヘッダーも定義しました。 1 つは本文に JSON データが含まれることを指定し、もう 1 つは API キーを提供します。

<YOUR API KEY> を実際の API キーに置き換えることができます。実際には、API キーはファイルにハードコーディングされるべきではなく、環境変数を使用してロードされる必要があります。最後に、前に定義した body 定数の値として body プロパティを指定しました。

最後に、 fetch 呼び出しを行います。

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

ここでは、フェッチ関数を呼び出し、API エンドポイントと前に定義したオプションを渡しています。 fetch Promise を返すため、 then 使用して JSON 応答を解析するコールバックをアタッチしました。

コールバックは別の Promise を返し、それが解決されると、返されたオブジェクトを 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..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'
  }
}

PHP で API を使用する

Metascraping API を使用するには、まずローカル マシンに PHP と Composer がインストールされていることを確認してください。

まず、プロジェクト フォルダーを作成して開きます。

 mkdir metascraping-php && cd metascraping-php

次に、GuzzleHTTP をインストールします。 Guzzle は、 API で使用できる多くの PHP クライアントの 1 つです。

 composer require guzzlehttp/guzzle

Guzzle がインストールされたら、次のスクリプトを作成できます。

 touch script.php

その後、コードの記述を開始できます。任意のテキスト エディタを使用して、 script.php ファイルを開きます。私の場合は、ターミナルベースのテキストエディタである nano を使用します。

 nano script.php

スクリプト内に定型的な PHP を挿入します。

 <?php
    // All code goes here
?>

次に、拡張機能をロードするために、Guzzle から Request クラスと Client クラスをインポートします。このコードは、前に書いた <?php ?> の間に記述する必要があります。

 require_once('vendor/autoload.php');

use GuzzleHttp\Client;
use GuzzleHttp\Psr7\Request;

次に、 GuzzleHttp\Client クラスをインスタンス化してクライアントを作成できます。

 $client = new GuzzleHttp\Client();

その後、リクエストのヘッダーを定義できます。この特定のリクエストでは、2 つのヘッダーを提供します。1 つは本文のコンテンツ タイプが JSON であることを指定し、もう 1 つは API キーを含みます。

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

<YOUR API KEY HERE> を、 API ダッシュボードの実際の API キーに置き換えます。

次に、本体を定義します。この場合、本文はプロパティ url "https://twitter.com" に設定された JSON 文字列になります。

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

リクエストを作成するには、前にインポートしたリクエスト クラスをインスタンス化し、リクエスト メソッド、エンドポイント、ヘッダー、リクエスト本文を渡します。

 $request = new Request('POST', 'https://api..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..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"
     }
}

最後の言葉

このガイドでは、 Metascraping API を使用するさまざまな方法を説明しました。

Metascraping API を使用すると、URL 以外のパラメータも提供できます。そのようなパラメーターの 1 つはプロキシ パラメーターであり、 API プレミアム プランでのみアクセスできます。いずれにせよ、 API は多くの用途に十分な強力さを維持しています。

詳細については、 API の公式ドキュメントを確認してください。

「 メタ スクレイピング API を使用してウェブサイトのメタデータを抽出する方法」についてわかりやすく解説!絶対に観るべきベスト2動画

【PythonによるWebスクレイピング入門】vol.02:Webページ内のテキストデータを自動で抽出(Selenium)
【PythonでWebスクレイピング】Seleniumの使い方解説! Web操作自動化もできる!〜 初心者向け 〜 プログラミング入門

一般に、Web スクレイピングは、Web ページの読み込み時に生成される HTML から Web サイトからデータを抽出します。

メタスクレイピングは、Web ページのメタタグから Web ページのメタデータを抽出します。

Web ページのメタデータは、ページに関する情報ですが、ページのコンテンツではありません。たとえば、メタデータには、作成者の名前、タイトル、Web ページの説明が含まれる場合があります。

ユーザーと検索エンジンがページの内容を理解するのに役立ちます。メタデータをスクレイピングすると、ユーザーは Web ページに関する情報を短時間で迅速に収集できます。

Web ページのメタデータをスクラップするには、手動でのスクレイピング、ライブラリの使用、 Metascraping API などの API の使用など、いくつかのアプローチを使用できます。

猫を殺すたくさんの方法

手動でスクラップするには、Chrome DevTools を使用して Web ページを開き、[Elements] タブからメタデータを抽出します。ただし、このマニュアルは、複数のページを扱う場合、繰り返しが多くて退屈です。複数のアプローチを使用してタスクを自動化できます。

最初のアプローチは 、コードを最初から作成することです。このアプローチでは、メタデータを抽出する Web サイトに HTTP リクエストを送信します。その後、正規表現またはパターン マッチングを使用してメタ タグからデータを抽出して、応答 HTML を解析できます。ただし、このアプローチは既存のコードの書き換えに時間を費やすことになるため、車輪の再発明となります。

2 番目のアプローチ は、好みのプログラミング言語でライブラリを使用することです。これにより、実装の詳細を抽象化し、物事をシンプルに保つことができます。ただし、選択したプログラミング言語に適切なライブラリがない場合、または使用している特定のランタイムがそのライブラリをサポートしていない場合は、その言語を使用できません。

3 番目のアプローチ は、 Metascraping API のような API を使用することです。このアプローチは、プログラミング言語に関係なく統一されたインターフェイスを提供するため、理想的です。 HTTP リクエストの作成をサポートしている限り、どの言語でも使用できます。

この記事では、cURL、PHP、および JavaScript(NodeJS) で Metascraping API を使用する方法を説明します。

メタ スクレイピング API を使用してウェブサイトのメタデータを抽出する方法
メタ スクレイピング API を使用してウェブサイトのメタデータを抽出する方法

Metascraping API を使用する理由は何ですか?

他のアプローチには欠点があるため、 API を使用する利点は次のとおりです。

  • 言語やランタイム環境に依存しません。
  • 車輪の再発明を避けることができ、コードの作成に費やす時間が短縮されます。
  • 複数の Web サイトを効率的に (数秒で) スクレイピングできます。
  • 使い方は驚くほど簡単です。
  • 無料でご利用いただけます。
メタ スクレイピング API を使用してウェブサイトのメタデータを抽出する方法
メタ スクレイピング API を使用してウェブサイトのメタデータを抽出する方法

API の使用を開始する

API を使用するには、API キーが必要です。取得するには、 Siterelic にアクセスして無料アカウントを作成します。アカウントを作成したら、 ダッシュボード にログインします。ダッシュボードから API キーを確認できるはずです。

-ダッシュボード-1
-ダッシュボード-1
メタ スクレイピング API を使用してウェブサイトのメタデータを抽出する方法
メタ スクレイピング API を使用してウェブサイトのメタデータを抽出する方法

メタスクレイピング API の概要

API エンドポイントは https://api..com/metascraping にあります。リクエストを行うときは、 x-api-key 名前と API キーの値を持つリクエスト ヘッダーとして API キーを指定する必要があります。

リクエスト本文で追加のパラメーターを渡すことも必要です。これらは url device 、および proxyCountry です。

  • URL に は、メタデータをスクレイピングする Web ページの URL を指定します。
  • デバイスは、 メタデータをスクレイピングするときにサイトにアクセスするために使用されるデバイスを指定します。デバイスのオプションはモバイルまたはデスクトップです。
  • プロキシ国は、 データがスクレイピングされる前にリクエストを行う必要がある国を指定します。ただし、代理国はプレミアム機能であり、 の有料プランでのみ使用できます。

パラメーターが本文の一部として渡される場合、 GET リクエストにはメタデータを含めることができないため、リクエストは POST リクエストである必要があります。

メタ スクレイピング API を使用してウェブサイトのメタデータを抽出する方法
メタ スクレイピング API を使用してウェブサイトのメタデータを抽出する方法

cURL での メタスクレイピング API の使用

最初のデモンストレーションでは、コマンド ラインから cURL ユーティリティを使用して Metascraping API をリクエストします。 cURL を使用するには、 まず cURL をインストールする 必要があります。

Bash ターミナルを使用するつもりです。これは、macOS および Linux のデフォルトのターミナルである必要があります。 Windows の場合は、Git Bash をインストールする必要があります。

cURL がインストールされたら、cURL コマンドを使用してリクエストを行うことができます。コマンドにオプションを渡して、リクエスト パラメーター (リクエスト メソッド、エンドポイント、リクエスト本文、リクエスト ヘッダー) を指定します。

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

注意: 最初の 3 行の後のバックスラッシュを使用すると、コマンド入力を複数行に分割できます。

このコマンドは、HTTP メソッドを POST として指定し、エンドポイントを API メタスクレイピング エンドポイントとして指定しました。

また、リクエスト本文を、https://tesla.com として指定された URL プロパティを持つ JSON オブジェクトとして送信しました。最後に、本文のコンテンツ タイプを JSON として指定するヘッダーを追加し、 x-api-key ヘッダーを使用して 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"}}

それが正しい出力です。

JavaScript での メタスクレイピング API の使用

このプロジェクトでは、API からデータをフェッチする NodeJS スクリプトを作成します。これは、NodeJS をインストールする必要があることを意味します。プロジェクトの依存関係を管理するには、NPM または Node 用のその他のパッケージ マネージャーも必要です。また、Bash ターミナルを使用してコマンドを実行するつもりです。

JavaScript で API を使用するには、まず空のプロジェクト フォルダーを作成し、それをターミナルで開きます。

 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 ファイルを編集して、まず、 node-fetch モジュールのデフォルトのエクスポートである fetch 関数をインポートします。

 import fetch from 'node-fetch'

次に、リクエストの本文を定義します。これは、 url プロパティを持つ JSON 文字列になります。 url プロパティの値は、メタデータを取得する Web ページです。

 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 リクエストとして定義しました。 2 つのヘッダーも定義しました。 1 つは本文に JSON データが含まれることを指定し、もう 1 つは API キーを提供します。

<YOUR API KEY> を実際の API キーに置き換えることができます。実際には、API キーはファイルにハードコーディングされるべきではなく、環境変数を使用してロードされる必要があります。最後に、前に定義した body 定数の値として body プロパティを指定しました。

最後に、 fetch 呼び出しを行います。

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

ここでは、フェッチ関数を呼び出し、API エンドポイントと前に定義したオプションを渡しています。 fetch Promise を返すため、 then 使用して JSON 応答を解析するコールバックをアタッチしました。

コールバックは別の Promise を返し、それが解決されると、返されたオブジェクトを 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..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'
  }
}

PHP で API を使用する

Metascraping API を使用するには、まずローカル マシンに PHP と Composer がインストールされていることを確認してください。

まず、プロジェクト フォルダーを作成して開きます。

 mkdir metascraping-php && cd metascraping-php

次に、GuzzleHTTP をインストールします。 Guzzle は、 API で使用できる多くの PHP クライアントの 1 つです。

 composer require guzzlehttp/guzzle

Guzzle がインストールされたら、次のスクリプトを作成できます。

 touch script.php

その後、コードの記述を開始できます。任意のテキスト エディタを使用して、 script.php ファイルを開きます。私の場合は、ターミナルベースのテキストエディタである nano を使用します。

 nano script.php

スクリプト内に定型的な PHP を挿入します。

 <?php
    // All code goes here
?>

次に、拡張機能をロードするために、Guzzle から Request クラスと Client クラスをインポートします。このコードは、前に書いた <?php ?> の間に記述する必要があります。

 require_once('vendor/autoload.php');

use GuzzleHttp\Client;
use GuzzleHttp\Psr7\Request;

次に、 GuzzleHttp\Client クラスをインスタンス化してクライアントを作成できます。

 $client = new GuzzleHttp\Client();

その後、リクエストのヘッダーを定義できます。この特定のリクエストでは、2 つのヘッダーを提供します。1 つは本文のコンテンツ タイプが JSON であることを指定し、もう 1 つは API キーを含みます。

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

<YOUR API KEY HERE> を、 API ダッシュボードの実際の API キーに置き換えます。

次に、本体を定義します。この場合、本文はプロパティ url "https://twitter.com" に設定された JSON 文字列になります。

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

リクエストを作成するには、前にインポートしたリクエスト クラスをインスタンス化し、リクエスト メソッド、エンドポイント、ヘッダー、リクエスト本文を渡します。

 $request = new Request('POST', 'https://api..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..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"
     }
}

最後の言葉

このガイドでは、 Metascraping API を使用するさまざまな方法を説明しました。

Metascraping API を使用すると、URL 以外のパラメータも提供できます。そのようなパラメーターの 1 つはプロキシ パラメーターであり、 API プレミアム プランでのみアクセスできます。いずれにせよ、 API は多くの用途に十分な強力さを維持しています。

詳細については、 API の公式ドキュメントを確認してください。

「 メタ スクレイピング API を使用してウェブサイトのメタデータを抽出する方法」についてわかりやすく解説!絶対に観るべきベスト2動画

【PythonによるWebスクレイピング入門】vol.02:Webページ内のテキストデータを自動で抽出(Selenium)
【PythonでWebスクレイピング】Seleniumの使い方解説! Web操作自動化もできる!〜 初心者向け 〜 プログラミング入門