如何使用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密钥。
您还需要在请求体中传入其他参数。这些参数是url
、device
和proxycountry
。
- 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的官方文档以获取更多信息。