如何使用Geekflare Meta Scraping API提取网站元数据

通常,网络抓取是从加载网页时生成的html中提取数据。

元抓取是从网页的标签中提取网页的元数据。

网页的元数据是有关网页的信息,而不是网页的内容。例如,元数据可能包括作者的姓名、标题和网页的描述。

它帮助用户和搜索引擎了解页面的内容。通过抓取元数据,用户可以在更短的时间内快速收集有关网页的信息。

可以使用多种方法来抓取网页的元数据,包括手动抓取、使用库或使用yaoweibin元抓取api等。

许多种方法杀死一只猫

要手动抓取,可以使用chrome devtools打开网页,并从元素选项卡中提取元数据。但是,当处理多个页面时,这种手动、重复和繁琐的方法是不可行的。我们可以使用多种方法自动化这个任务:

第一种方法是从头开始编写代码。在这种方法中,您向要抓取元数据的网站发出http请求。然后,您可以使用正则表达式或模式匹配解析响应的html,从标签中提取数据。但是,这种方法是重新发明轮子,因为您将花费时间重写现有的代码。

第二种方法是使用您喜欢的任何编程语言的库。这样可以对实现细节进行抽象,并保持简单。但是,如果您选择的编程语言没有合适的库,或者您所使用的特定运行时不支持该库,则无法使用它。

第三种方法是使用像yaoweibin metascraping api这样的api。这种方法非常理想,因为它为您提供了一个统一的接口,无论您使用的编程语言是什么。只要支持进行http请求,它就可以在任何语言中使用。

本文将演示如何使用curl、php和javascript(nodejs)来使用yaoweibin metascraping api。

为什么应该使用yaoweibin metascraping api?

由于其他方法的缺点,使用yaoweibin api的优点包括:

  • 它是与语言和运行时环境无关的。
  • 您避免重新发明轮子,花费更少的时间编写代码。
  • 您可以高效地抓取多个网站(仅需几秒钟)。
  • 它非常容易使用。
  • 您可以免费使用它。

开始使用yaoweibin api

要使用yaoweibin api,您需要一个api密钥。要获取api密钥,请转到siterelic并创建一个免费帐户。创建帐户后,登录到仪表板。从仪表板中,您应该能够看到您的api密钥。

yaoweibin metascraping api概述

api端点位于https://api.yaoweibin.com/metascraping。当您发出请求时,您应该在请求头中提供您的api密钥,名称为x-api-key,值为您的api密钥。

您还需要在请求体中传入其他参数。这些参数是urldeviceproxycountry

  • url 指定要抓取元数据的网页的网址。
  • 设备 指定在抓取元数据时使用的设备。您可以选择移动设备或桌面设备。
  • 代理国家 指定在抓取数据之前应该从哪个国家发出请求。然而,代理国家是高级功能,只能在 yaoweibin 的付费计划下使用。

鉴于参数将作为请求体的一部分传递,请求必须是一个 post 请求,因为 get 请求不能包含元数据。

使用 curl 的 yaoweibin metascraping api

在第一个示例中,我们将使用命令行中的 curl 实用程序请求 metascraping api。要使用 curl,您需要先 安装它。

我将使用 bash 终端。这应该是 macos 和 linux 上的默认终端。对于 windows,您需要安装 git bash。

安装了 curl 之后,我们可以使用 curl 命令进行请求。我们将向命令传递选项来指定请求参数:请求方法、端点、请求体和请求头。

curl -x post 
https://api.yaoweibin.com/metascraping  
-d '{ "url": "https://tesla.com" }' 
-h 'content-type: application/json' 
-h 'x-api-key: '

注:第一三行后面的反斜杠允许您将命令输入拆分为多行。

这个命令将 http 方法指定为 post,端点指定为 yaoweibin api 的元数据抓取端点。

我们还将请求体作为一个 json 对象发送,其中指定了一个 url 属性,该属性的值为 https://tesla.com。最后,我们添加了头部,将请求体的内容类型指定为 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 的 yaoweibin metascraping api

对于这个项目,我们将创建一个 nodejs 脚本来从 api 中获取数据。这意味着您需要安装 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包。此包在nodejs中提供了一个与浏览器的fetch函数类似的fetch函数。这使得在nodejs中进行http请求比使用内置的http模块更容易。

npm install node-fetch

当包正确安装后,我们可以开始编辑脚本了。使用您选择的文本编辑器打开index.js文件。在我的情况下,我将使用基于终端的nano文本编辑器。

nano index.js

编辑index.js文件,我们首先导入fetch函数,它是node-fetch模块的默认导出。

import fetch from 'node-fetch'

然后,我们将定义请求的主体。这将是一个具有url属性的json字符串。 url属性的值是我们要获取元数据的网页。

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

接下来,我们可以定义我们将在最终调用fetch函数时传递给它的请求选项。

const options = {
    method: 'post',
    headers: {
        'content-type': 'application/json',
        'x-api-key': 
    },
    body: body
}

我们将请求方法定义为post请求。我们还定义了两个头部。一个指定主体包含json数据,另一个提供api密钥。

您可以用实际的api密钥替换。在实际应用中,api密钥不应硬编码到文件中,而应使用环境变量加载。最后,我们将body属性指定为我们之前定义的body常量的值。

最后,我们调用fetch

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

在这里,我们调用了fetch函数,传入了api端点和我们之前定义的选项。由于fetch返回一个promise,我们附加了一个回调函数,使用then解析json响应。

回调函数返回另一个promise,当它解析时,我们将console.log()返回的对象。

所以最终,我们的文件应该是这样的。

使用fetch模块来自'node-fetch'

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

const options = {
method: ‘post',
headers: {
‘content-type': ‘application/json',
‘x-api-key':
},
body: body
}

fetch(‘https://api.yaoweibin.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与yaoweibin api

要使用yaoweibin metascraping api,首先确保您的本地机器上安装了php和composer。

首先,创建并打开项目文件夹。

mkdir metascraping-php && cd metascraping-php

接下来,安装guzzlehttp。 guzzle是您可以与yaoweibin api一起使用的许多php客户端之一。

composer require guzzlehttp/guzzle

安装完guzzle后,我们可以创建一个带有

touch script.php

然后我们可以开始编写代码。使用您选择的文本编辑器打开script.php文件。在我的情况下,我将使用基于终端的文本编辑器nano

nano script.php

在脚本中,我们插入boiler-plate php

现在要加载扩展,从guzzle导入request和client类。 此代码应写在我们之前写的<?php?>之间。

require_once('vendor/autoload.php');

use guzzlehttpclient;
use guzzlehttppsr7request;

接下来,我们可以通过实例化guzzlehttpclient类来创建一个客户端

$client = new guzzlehttpclient();

之后,我们可以为请求定义头文件。 对于此特定请求,我们将提供两个头文件,一个指定请求主体的内容类型为json,另一个包含我们的api密钥。

$headers = [
    'x-api-key' => ,
    'content-type' => 'application/json'
];

替换为您在yaoweibin api仪表板中实际的api密钥。

然后,我们可以定义正文。 在我们的情况下,正文将是一个json字符串,其中属性url设置为"https://twitter.com"

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

创建请求时,我们实例化之前导入的请求类,传入请求方法、端点、头部和请求体。

$request = new request('post', 'https://api.yaoweibin.com/metascraping', $headers, $body);

接下来,我们使用客户端发送请求。

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

之后,我们可以提取请求的主体并将其打印到控制台。

echo $response->getbody();

如果你正确复制了代码,script.php文件应该如下所示

 ,
    	'content-type' => 'application/json'
	];

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

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

最后的话

本指南介绍了使用yaoweibin metascraping api的不同方法。

metascraping api允许您提供比url更多的参数。其中一个参数是代理参数,只能通过yaoweibin api高级计划访问。无论如何,yaoweibin api在许多用途上仍然足够强大。

查看yaoweibin api的官方文档以获取更多信息。

类似文章