Oxylabs E-Commerce Scraper API

如何使用 Oxylabs Scraper API [第 1 部分]:Oxylabs 电子商务 Scraper API

你知道如何使用 Oxylabs E-Commerce Scraper API 吗?这是 OxyLabs 官方最全面的介绍。

Oxylabs E-Commerce Scraper API pricing

快速入门

Scraper API 可帮助您进行繁重的数据检索操作。您可以使用 Scraper API 访问各种公共页面。它能毫不费力地提取网络数据,不会出现任何延迟或错误。

Scraper API 使用 基本 HTTP 身份验证 需要发送用户名和密码。

这是迄今为止开始使用 Scraper API 最快的方法。您将向 https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html 使用 实时 美国的整合方法 地理位置 并检索已 经过解析的 数据。如果想获取页面 HTML 而不是解析后的数据,只需删除 解析 和 解析器类型 参数。不要忘记替换 用户名 和 密码 使用代理用户凭据。

卷曲 --用户 "用户名:密码" 'https://realtime.oxylabs.io/v1/queries' -H "内容类型:应用程序/json" -d '{"源":"universal_ecommerce", "url":"https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html", "geo-location":"United States", "parser_type":"ecommerce_product", "parse": true}'

如果您有任何本文件未涉及的问题,请联系您的客户经理或我们的支持人员,地址是 [email protected].


整合方法

Scraper API 支持三种集成方法,它们都有各自独特的优势:

  • 推拉式.使用这种方法,现在需要与我们的端点保持活动连接,以检索数据。在发出请求时,我们的系统能够在任务完成后自动 ping 用户服务器(见回调)。这种方法可以节省计算资源,而且易于扩展。
  • 实时.该方法要求用户与我们的端点保持活动连接,以便在任务完成时成功获取结果。这种方法可以在一个服务中实现,而推拉法则需要两个步骤。
  • 超级用户接口.这种方法与实时方法非常相似,但用户可以使用 HTML Cralwer 作为代理,而不是向我们的端点发布数据。要检索数据,用户必须设置一个代理端点,并向所需的 URL 发送 GET 请求。必须使用标头添加其他参数。

我们推荐的数据提取方法是 推拉式.


推拉式

这是最简单、最可靠、最值得推荐的数据传输方法。在推拉式方案中,您向我们发送查询,我们向您返回工作 本我工作完成后,您可以使用 本我 中检索内容 /结果 端点。您可以自己检查作业完成状态,也可以设置一个能接受 POST 查询的简单监听器。这样,一旦作业准备就绪,我们就会给你发送一条回调消息。在本例中,结果将自动 上传到您的 S3 存储桶 名为 您的邮筒名称.


单一查询

以下端点将处理对一个关键字或 URL 的单次查询。API 将返回一条确认信息,其中包含任务信息,包括任务 本我.您可以使用它来检查任务完成状态 本我或者,您也可以要求我们在扫描任务完成后 ping 您的回调端点,方法是添加 回调URL 在查询中。

邮寄 https://data.oxylabs.io/v1/queries

您需要在 JSON 主体中将查询参数作为数据发布。

cURLPythonPHP超文本传输协定
curl --user user:pass1\
'https://data.oxylabs.io/v1/queries' \
-H "内容类型:应用程序/json" \
-d '{"源":"universal_ecommerce", "url":"https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html","callback_url":"https://your.callback.url","storage_type":"s3","storage_url":"your_bucket_name"}'
舶来品 要求
 打印 舶来品 打印


# 结构有效载荷。
载荷 = {
    来源: universal_ecommerce,
    'url'(网址: 'https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html',
    回调URL: 'https://your.callback.url',
    存储类型: 's3',
    存储URL: your_bucket_name
}

# 获取响应。
回应 = 要求.要求(
    POST,
    'https://data.oxylabs.io/v1/queries',
    授权=(用户, pass1),
    json=载荷,
)

# 向 stdout 打印经过修饰的响应。
打印(回应.json())
<?php

$params = 矩阵(
    来源 => universal_ecommerce,
    'url'(网址 => 'https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html',
    回调URL => 'https://your.callback.url',
    存储类型 => 's3',
    存储URL => your_bucket_name
);

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "https://data.oxylabs.io/v1/queries");
curl_setopt($ch, curlopt_returntransfer, 1);
curl_setopt($ch, curlopt_postfields, json_encode($params));
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, curlopt_userpwd, "用户" . ":" . "pass1");

$headers = 矩阵();
$headers[] = "内容类型:应用程序/json";
curl_setopt($ch, curlopt_httpheader, $headers);

$result = curl_exec($ch);
回响 $result;

如果 (curl_errno($ch)) {
    回响 错误: . curl_error($ch);
}
curl_close ($ch);
?>
目前不支持 HTTP 方法

API 将以 JSON 格式响应查询信息,并将其打印在响应体中,与此类似:

{
  "回调URL": "https://your.callback.url",
  "client_id": 5,
  "创建时间": "2019-10-01 00:00:01",
  "域": "com",
  "地理位置": 无效,
  "id": "12345678900987654321",
  "限制": 10,
  "locale": 无效,
  "页面": 1,
  "解析": 错误,
  "渲染": 无效,
  "url": "https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html",
  "源": "universal_ecommerce",
  "起始页": 1,
  "状态": "待定",
  "存储类型": "s3",
  "storage_url": "YOUR_BUCKET_NAME/12345678900987654321.json",
  "子域": "www",
  "更新时间": "2019-10-01 00:00:01",
  "user_agent_type": "桌面",
  "_链接": [
    {
      "rel": "自我",
      "href": "http://data.oxylabs.io/v1/queries/12345678900987654321",
      "方法": "GET"
    },
    {
      "rel": "结果",
      "href": "http://data.oxylabs.io/v1/queries/12345678900987654321/results",
      "方法": "GET"
    }
  ]
}

检查工作状态

如果您的查询有 回调URL我们会在扫描任务完成后向您发送一条包含内容链接的信息。但是,如果没有 回调URL 在查询中,您需要自己检查任务状态。为此,您需要使用 href 根据 rel:自我 在您向我们的 API 提交查询后收到的响应信息中。它应该与下面的内容相似: http://data.oxylabs.io/v1/queries/12345678900987654321.

GET https://data.oxylabs.io/v1/queries/{id}

查询此链接将返回工作信息,包括其 地位.有三种可能 地位 价值观

未决 任务仍在队列中,尚未完成。
完成的 任务完成后,您可以通过在 href 根据 rel:成果 : http://data.oxylabs.io/v1/queries/12345678900987654321/results
有问题 任务出现了问题,我们无法完成任务,很可能是由于目标网站方面的服务器出错。
cURLPythonPHP超文本传输协定
curl --user user:pass1 'http://data.oxylabs.io/v1/queries/12345678900987654321'
舶来品 要求
 打印 舶来品 打印

# 从统计终点获取响应。
回应 = 要求.要求(
    方法=GET,
    网址='http://data.oxylabs.io/v1/queries/12345678900987654321',
    授权=(用户, pass1),
)

# 向 stdout 打印经过修饰的 JSON 响应。
打印(回应.json())
<?php

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "http://data.oxylabs.io/v1/queries/12345678900987654321");
curl_setopt($ch, curlopt_returntransfer, 1);
curl_setopt($ch, curlopt_customrequest, "GET");
curl_setopt($ch, curlopt_userpwd, "用户" . ":" . "pass1");

$result = curl_exec($ch);
回响 $result;

如果 (curl_errno($ch)) {
    回响 错误: . curl_error($ch);
}
curl_close ($ch);
?>
目前不支持 HTTP 方法

API 将在响应体中打印 JSON 格式的查询信息。请注意,任务 地位 改为 完成的.现在您可以通过查询 http://data.oxylabs.io/v1/queries/12345678900987654321/results.

您还可以看到任务已被 updated_at 2019-10-01 00:00:15 - 查询需要 14 秒才能完成。

{
  "client_id": 5,
  "创建时间": "2019-10-01 00:00:01",
  "域": "com",
  "地理位置": 无效,
  "id": "12345678900987654321",
  "限制": 10,
  "locale": 无效,
  "页面": 1,
  "解析": 错误,
  "渲染": 无效,
  "url": "沙发",
  "源": "universal_ecommerce",
  "起始页": 1,
  "状态": "完成",
  "子域": "www",
  "更新时间": "2019-10-01 00:00:15",
  "user_agent_type": "桌面",
  "_链接": [
    {
      "rel": "自我",
      "href": "http://data.oxylabs.io/v1/queries/12345678900987654321",
      "方法": "GET"
    },
    {
      "rel": "结果",
      "href": "http://data.oxylabs.io/v1/queries/12345678900987654321/results",
      "方法": "GET"
    }
  ]
}

检索工作内容

通过检查作业的状态,一旦知道可以检索作业,就可以使用 href 根据 rel:成果 在我们的初始响应中。它看起来应该与此类似: http://data.oxylabs.io/v1/queries/12345678900987654321/results.

GET https://data.oxylabs.io/v1/queries/{id}/results

通过设置回调服务,可以自动检索结果,而无需定期检查作业状态。用户需要指定运行回调服务的服务器的 IP 或域。当我们的系统完成一项作业时,它将向所提供的 IP 或域发送一条信息,回调服务将下载结果,如回调实现示例中所述。

cURLPythonPHP超文本传输协定
curl --user user:pass1 'http://data.oxylabs.io/v1/queries/12345678900987654321/results'
舶来品 要求
 打印 舶来品 打印

# 从统计终点获取响应。
回应 = 要求.要求(
    方法=GET,
    网址='http://data.oxylabs.io/v1/queries/12345678900987654321/results',
    授权=(用户, pass1),
)

# 将经过修饰的 JSON 响应打印到 stdout。
打印(回应.json())
<?php

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "http://data.oxylabs.io/v1/queries/12345678900987654321/results");
curl_setopt($ch, curlopt_returntransfer, 1);
curl_setopt($ch, curlopt_customrequest, "GET");
curl_setopt($ch, curlopt_userpwd, "用户" . ":" . "pass1");

$result = curl_exec($ch);
回响 $result;

如果 (curl_errno($ch)) {
    回响 错误: . curl_error($ch);
}
curl_close ($ch);
?>
目前不支持 HTTP 方法

API 将返回工作内容:

{
  "结果": [
    {
      "内容": "
        内容
      ",
      "创建时间": "2019-10-01 00:00:01",
      "更新时间": "2019-10-01 00:00:15",
      "页": 1,
      "url": "https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html",
      "job_id": "12345678900987654321",
      "状态代码": 200
    }
  ]
}

回调

回调是一个 职位 我们会向您的机器发送请求,告知数据提取任务已完成,并提供下载刮擦内容的 URL。这意味着您不再需要 检查工作状态 手动操作。一旦数据到齐,我们会通知您,您现在需要做的就是 取回.

cURLPythonPHP超文本传输协定
# 请查看 Python 和 PHP 代码示例。
# 这是一个简单的 Sanic 网络服务器,通过 localhost:8080 监听回调路由。
# 它会将作业结果打印到 stdout。
舶来品 要求
 打印 舶来品 打印
 卫生 舶来品 萨尼奇, 回应


AUTH_TUPLE = (用户, pass1)

应用 = 萨尼奇()


# 定义 /job_listener 端点,接受 POST 请求。
@app.route(/job_listener, 方法=[POST])
异步 捍卫 工作监听器(要求):
    尝试:
        重新 = 要求.json
        链接 = 重新.获取(链接, [])
        对于 链接  链接:
            如果 链接[rel] == 结果:
                # Sanic 是异步的,但请求是同步的,以充分发挥
                # 利用 Sanic 的优势,使用 aiohttp。
                res_response = 要求.要求(
                    方法=GET,
                    网址=链接[href],
                    授权=AUTH_TUPLE,
                )
                打印(res_response.json())
                断裂
    除开 例外情况 作为 e:
        打印("监听器异常:{}".格式(e))
    返回 回应.json(地位=200, 机构={状态: 好的})


如果 姓名____ == '__main__'(__main__:
    应用.运行(东道主='0.0.0.0', =8080)
<?php
$stdout = fopen(php://stdout, 'w');

如果 (isset($_POST)) {
    $result = 数组合并($_POST, (矩阵) json_decode(file_get_contents(php://input)));

    $ch = curl_init();

    curl_setopt($ch, CURLOPT_URL, "https://data.oxylabs.io/v1/queries/".$result[id].结果);
    curl_setopt($ch, curlopt_returntransfer, 1);
    curl_setopt($ch, curlopt_customrequest, "GET");
    curl_setopt($ch, curlopt_userpwd, "用户" . ":" . "pass1");

    $result = curl_exec($ch);
    fwrite($stdout, $result);

    如果 (curl_errno($ch)) {
        回响 错误: . curl_error($ch);
    }
    curl_close ($ch);
}
?>
目前不支持 HTTP 方法

回调输出示例

{  
   "创建时间":"2019-10-01 00:00:01",
   "更新时间":"2019-10-01 00:00:15",
   "locale":无效,
   "client_id":163,
   "user_agent_type":"桌面",
   "源":"universal_ecommerce",
   "页面":1,
   "子域":"www",
   "状态":"完成",
   "起始页":1,
   "解析":0,
   "渲染":无效,
   "优先权":0,
   "ttl":0,
   "起源":"api",
   "坚持":,
   "id":"12345678900987654321",
   "回调URL":"http://your.callback.url/",
   "url":"https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html",
   "域":"de",
   "限制":10,
   "地理位置":无效,
   {...}
   "_链接":[
      {  
         "href":"https://data.oxylabs.io/v1/queries/12345678900987654321",
         "方法":"GET",
         "rel":"自我"
      },
      {  
         "href":"https://data.oxylabs.io/v1/queries/12345678900987654321/results",
         "方法":"GET",
         "rel":"结果"
      }
   ],
}

批量查询

Scraper API 还接受每次查询多个关键词,每批最多可提取 1,000 个关键词。以下端点将向提取队列提交多个关键词。

邮寄 https://data.oxylabs.io/v1/queries/batch

您需要在 JSON 主体中将查询参数作为数据发布。

系统会将每个关键字作为一个单独请求来处理。如果您提供了回调 URL,则每个关键字都会收到一个单独的调用。否则,我们的初始响应将包含任务 本我的所有关键字。例如,如果您发送了 50 个关键字,我们将返回 50 个唯一的职位。 本我s.

重要! 询问 是唯一一个可以有多个值的参数。所有其他参数对于该批次查询都是一样的。

cURLPythonPHP超文本传输协定
curl --user user:pass1 'https://data.oxylabs.io/v1/queries/batch' -H 内容类型:应用程序/json \
 -d @keywords.json
舶来品 要求
舶来品 json
 打印 舶来品 打印


# 从文件中获取有效载荷。
 (关键词.json, 'r') 作为 f:
    载荷 = json.载荷(f.阅读())

回应 = 要求.要求(
    POST,
    'https://data.oxylabs.io/v1/queries/batch',
    授权=(用户, pass1),
    json=载荷,
)

# 打印经过修饰的回复。
打印(回应.json())
<?php

$paramsFile = file_get_contents(真实路径("keywords.json"));
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "https://data.oxylabs.io/v1/queries/batch");
curl_setopt($ch, curlopt_returntransfer, 1);
curl_setopt($ch, curlopt_postfields, $paramsFile);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, curlopt_userpwd, "用户" . ":" . "pass1");

$headers = 矩阵();
$headers[] = "内容类型:应用程序/json";
curl_setopt($ch, curlopt_httpheader, $headers);

$result = curl_exec($ch);
回响 $result;

如果 (curl_errno($ch)) {
    回响 错误: . curl_error($ch);
}
curl_close ($ch);
?>
目前不支持 HTTP 方法

keywords.json 内容:

{  
   "url":[  
      "https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html",
      "https://books.toscrape.com/catalogue/tipping-the-velvet_999/index.html",
      "https://books.toscrape.com/catalogue/soumission_998/index.html"
   ],
   "源": "universal_ecommerce",
   "回调URL": "https://your.callback.url"
}

API 将以 JSON 格式响应查询信息,并将其打印在响应体中,与此类似:

{
  "查询": [
    {
      "回调URL": "https://your.callback.url",
      {...}
      "创建时间": "2019-10-01 00:00:01",
      "域": "com",
      "id": "12345678900987654321",
      {...}
      "url": "https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html",
      "源": "universal_ecommerce",
      {...}
          "rel": "结果",
          "href": "http://data.oxylabs.io/v1/queries/12345678900987654321/results",
          "方法": "GET"
        }
      ]
    },
    {
      "回调URL": "https://your.callback.url",
      {...}
      "创建时间": "2019-10-01 00:00:01",
      "域": "com",
      "id": "12345678901234567890",
      {...}
      "url": "https://books.toscrape.com/catalogue/tipping-the-velvet_999/index.html",
      "源": "universal_ecommerce",
      {...}
          "rel": "结果",
          "href": "http://data.oxylabs.io/v1/queries/12345678901234567890/results",
          "方法": "GET"
        }
      ]
    },
    {
      "回调URL": "https://your.callback.url",
      {...}
      "创建时间": "2019-10-01 00:00:01",
      "域": "com",
      "id": "01234567899876543210",
      {...}
      "url": "https://books.toscrape.com/catalogue/soumission_998/index.html",
      "源": "universal_ecommerce",
      {...}
          "rel": "结果",
          "href": "http://data.oxylabs.io/v1/queries/01234567899876543210/results",
          "方法": "GET"
        }
      ]
    }
  ]
}

获取通知程序 IP 地址列表

您可能希望将向您发送回调信息的 IP 列入白名单,或为其他目的获取这些 IP 的列表。这可以通过 获取在这个端点上: https://data.oxylabs.io/v1/info/callbacker_ips.

cURLPythonPHP超文本传输协定
curl --user user:pass1 'https://data.oxylabs.io/v1/info/callbacker_ips'
舶来品 要求
 打印 舶来品 打印

# 从回调 IP 端点获取响应。
回应 = 要求.要求(
    方法=GET,
    网址='https://data.oxylabs.io/v1/info/callbacker_ips',
    授权=(用户, pass1),
)

# 将经过修饰的 JSON 响应打印到 stdout。
打印(回应.json())
<?php

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "https://data.oxylabs.io/v1/info/callbacker_ips");
curl_setopt($ch, curlopt_returntransfer, 1);
curl_setopt($ch, curlopt_customrequest, "GET");
curl_setopt($ch, curlopt_userpwd, "用户" . ":" . "pass1");

$result = curl_exec($ch);
回响 $result;

如果 (curl_errno($ch)) {
    回响 错误: . curl_error($ch);
}
curl_close ($ch);
?>
目前不支持 HTTP 方法

API 将返回向您的系统发出回调请求的 IP 列表:

{
    "ips": [
        "x.x.x.x",
        "y.y.y.y"
    ]
}

上传到存储器

默认情况下,Ecommerce Spraper API 的作业结果存储在我们的数据库中。这意味着您需要查询我们的结果端点并自行检索内容。自定义存储功能允许您将结果存储在自己的云存储中。该功能的优点是您无需额外请求即可获取结果,所有内容都会直接存储到您的存储桶中。

目前,我们只支持 Amazon S3。如果您想使用其他类型的存储,请联系您的客户经理讨论时间安排。

要将作业结果上传到 Amazon S3 存储桶,需要设置特殊权限。为此,请转到 https://s3.console.aws.amazon.com/ > S3 > 存储 > 桶名称(如果没有,请新建) > 权限 > 桶策略

Oxylabs ECommerce Universal Scraper API Upload to Storage

您可以在此找到水桶政策 JSON 或右侧的代码示例区。不要忘记更改 您的邮筒名称.该策略允许我们写入您的邮筒、为您上传文件并了解邮筒的位置。

要使用此功能,您需要在请求中指定两个附加参数。了解更多信息 这里.

上传路径如下 YOUR_BUCKET_NAME/job_ID.json.您可以在提交请求后从我们收到的回复正文中找到工作编号。在 本例 工作编号为 12345678900987654321.

{
    "版本": "2012-10-17",
    "Id": "Policy1577442634787",
    "声明": [
        {
            "希德": "Stmt1577442633719",
            "效果": "允许",
            "校长": {
                "AWS": "arn:aws:iam::324311890426:user/oxylabs.s3.uploader"
            },
            "行动": "s3:GetBucketLocation,
            "资源": "arn:aws:s3:::YOUR_BUCKET_NAME"
        },
        {
            "希德": "Stmt1577442633719",
            "效果": "允许",
            "校长": {
                "AWS": "arn:aws:iam::324311890426:user/oxylabs.s3.uploader"
            },
            "行动": [
                "s3:PutObject,
                "s3:PutObjectAcl"
            ],
            "资源": "arn:aws:s3:::YOUR_BUCKET_NAME/*"
        }
    ]
}

实时

数据提交与推拉式方法相同,但使用实时方法时,我们将在连接打开时返回内容。您向我们发送一个查询,连接保持打开,我们检索内容并将其发送给您。处理此问题的端点如下:

邮寄 https://realtime.oxylabs.io/v1/queries

开放连接的超时限制为 100 秒。因此,在极少数负载较重的情况下,我们可能无法确保将数据发送给您。

您需要在 JSON 主体中将查询参数作为数据发布。详情请参阅示例。

cURLPythonPHP超文本传输协定
curl --user user:pass1 'https://realtime.oxylabs.io/v1/queries' -H "内容类型:应用程序/json" \
 -d '{"源":"universal_ecommerce", "url":"https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html"}'
舶来品 要求
 打印 舶来品 打印


# 结构有效载荷。
载荷 = {
    来源: universal_ecommerce,
    'url'(网址: 'https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html',
}

# 获取响应。
回应 = 要求.要求(
    POST,
    'https://realtime.oxylabs.io/v1/queries',
    授权=(用户, pass1),
    json=载荷,
)

# 返回的不是包含任务状态和结果 url 的响应,而是
# JSON 响应结果。
打印(回应.json())
<?php

$params = 矩阵(
    来源 => universal_ecommerce,
    查询 => 沙发,
);

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "https://realtime.oxylabs.io/v1/queries");
curl_setopt($ch, curlopt_returntransfer, 1);
curl_setopt($ch, curlopt_postfields, json_encode($params));
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, curlopt_userpwd, "用户" . ":" . "pass1");

$headers = 矩阵();
$headers[] = "内容类型:应用程序/json";
curl_setopt($ch, curlopt_httpheader, $headers);

$result = curl_exec($ch);
回响 $result;

如果 (curl_errno($ch)) {
    回响 错误: . curl_error($ch);
}
curl_close ($ch);
?>
# URL 必须编码以转义 `&` 和 `=` 字符。本示例中不需要。

https://realtime.oxylabs.io/v1/queries?source=universal_ecommerce&url=https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html&access_token=12345abcde

打开连接时将返回的响应体示例:

{
  "结果": [
    {
      "内容": "<html
      内容
      "
      "创建时间": "2019-10-01 00:00:01",
      "更新时间": "2019-10-01 00:00:15",
      "id": 无效,
      "页": 1,
      "url": "https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html",
      "job_id": "12345678900987654321",
      "状态代码": 200
    }
  ]
}

超级用户接口

如果您曾经使用过普通代理进行数据搜刮,那么集成 SuperAPI 传输方法将轻而易举。您只需将我们的入口节点用作代理,使用 Scraper API 凭据进行授权,然后忽略证书即可。在 cURL 这是 -k 或 --不安全.您的数据将通过开放连接发送给您。

GET realtime.oxylabs.io:60000

超级用户接口只支持少量参数,因为它 仅适用于 直接 数据源 其中提供了完整的 URL。这些参数应作为标头发送。这是一份可接受的参数列表:

X-OxySERPs-User-Agent-Type 虽然无法指明特定的 User-Agent,但您可以让我们知道您使用的浏览器和平台。支持的用户代理列表如下所示 这里.

如果您在设置超级用户接口时需要帮助,请通过以下方式与我们联系 [email protected].

cURLPythonPHP超文本传输协定
curl -k \
-x realtime.oxylabs.io:60000 \
-用户:pass1 \
-H "X-OxySERPs-User-Agent-Type: desktop_chrome" \
"https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html"
舶来品 要求
 打印 舶来品 打印

# 定义代理口令。不要忘记在此处填写您的真实用户和密码。
代理 = {
  http: 'http://user:[email protected]:60000',
  https: 'https://user:[email protected]:60000',
}

回应 = 要求.要求(
    GET,
    'https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html',
    授权=(用户, pass1),
    核对=假的,  # 或接受我们的证书。
    代理=代理,
)

# 将结果页打印到 stdout
打印(回应.文本)

# 将返回的 HTML 保存为 result.html 文件
 (结果.html, 'w') 作为 f:
    f.写道(回应.文本)
<?php
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html");
curl_setopt($ch, curlopt_returntransfer, 1);
curl_setopt($ch, CURLOPT_PROXY, realtime.oxylabs.io:60000);
curl_setopt($ch, curlopt_proxyuserpwd, "用户" . ":" . "pass1");
curl_setopt($ch, curlopt_ssl_verifypeer, 错误);
curl_setopt($ch, curlopt_ssl_verifyhost, 错误);

$result = curl_exec($ch);
回响 $result;

如果 (curl_errno($ch)) {
    回响 错误: . curl_error($ch);
}
curl_close ($ch);
?>
超级用户接口不支持 HTTP 方法

内容类型

Scraper API 返回 原始HTML以及 结构化 JSON.

下载图片

可以通过 Scraper API 下载图像。如果通过 SuperAPI 下载,只需将输出保存到图片扩展名即可。例如

curl -k -x realtime.oxylabs.io:60000 -U user:pass1 "https://example.com/image.jpg" >> image.jpg

如果您使用 推拉式 或 实时 方法,您需要添加 content_encoding 参数的值为 base64.收到结果后,您需要解码来自 内容 转换成字节并保存为图像文件。右侧有一个 Python 示例。


数据来源

Scraper API 接受 URL 以及其他参数,如 User-Agent 类型、代理位置等。请参见此方法,我们将其称为 直接下文将对此进行说明。

Scraper API 能够在扫描时渲染 JavaScript。这样,您就能从网页中获取更多数据,并获得屏幕截图。

如果您对文件的任何部分有疑问,请致电我们 [email protected] 或联系您的客户经理。


直接

Oxylabs ECommerce Universal Scraper API Direct

 

universal_ecommerce 源的目的是检索互联网上任何 URL 的内容。 职位-将 JSON 格式的参数发送到以下端点,将把指定的 URL 提交到提取队列。

查询参数

参数 说明 默认值
消息来源 数据来源 universal_ecommerce
网址 通用网页的直接 URL(链接
用户代理类型 设备类型和浏览器。完整列表如下 这里。 桌面
地理位置 用于检索数据的代理地理位置。支持位置的完整列表如下 这里。
地点 正如 Accept-Language 标头所期望的那样。
给予 启用 JavaScript 渲染。在目标需要 JavaScript 加载内容时使用。仅适用于推拉(又称回调)方法。该参数有两个可用值:html(获取原始输出)和 png(获取 Base64 编码的截图)。
content_encoding 如果要下载图像,请添加此参数。了解更多信息 这里。 base64
背景 Base64 编码的 POST 请求正文。它只有在 http_method 设置为 post 时才有用。
内容
背景 递上自己的饼干
饼干
背景 指明是否希望扫描程序跟踪重定向(带有目标 URL 的 3xx 响应),以获取重定向链末端 URL 的内容。
follow_redirects
背景 传递自己的标头
页眉
背景 如果您想通过电子商务通用抓取器向目标 URL 发出 POST 请求,请将其设置为 "发布"。 获取
http_method
背景 如果您想在多个请求中使用同一个代理,可以使用此参数。只需将会话设置为任意字符串,我们就会为该 ID 分配一个代理,并最多保留 10 分钟。之后,如果您使用相同的会话 ID 发出另一个请求,我们就会为该特定会话 ID 分配一个新的代理。
session_id
背景 定义一个自定义 HTTP 响应代码(或其中的几个),我们应根据该代码认为刮擦成功并将内容返回给您。如果您希望我们返回 503 错误页面或在其他一些非标准情况下,这可能会很有用。
成功状态代码
回调URL URL 到您的回调端点。
解析 true 将返回结构化数据,只要提交的 URL 指向电子商务产品页面即可。将此参数与解析器类型参数结合使用,可使用我们的自适应解析器。
解析器类型 将值设为 ecommerce_product,以访问自适应解析器。
存储类型 存储服务提供商。目前只支持亚马逊 S3:s3。完整的实现可以在 上传到存储器 页。只能通过推拉(回调)方法运行。
存储URL 您的 Amazon S3 存储桶名称。仅适用于推挽(回调)方法。

   - 所需参数

在本例中,应用程序接口将以推拉方式检索一个电子商务通用产品页面。所有可用参数都包含在内(尽管在同一请求中并非总是必要或兼容),以便让您了解如何格式化您的请求:

cURLPythonPHP超文本传输协定
curl --user user:pass1 \
'https://data.oxylabs.io/v1/queries' \
-H "内容类型:应用程序/json" \
 -d '{"源":"universal_ecommerce", "url":"https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html", "user_agent_type":"mobile", "render":"html"、
 "上下文":{"key":"headers", "value": ["Accept-Language":"en-US", "Content-Type":"application/octet-stream", "Custom-Header":"自定义标题内容"]},{"key":"cookies","value":[{"key":"NID","值":"1234567890"},{"key":"1P JAR","值":"0987654321"},{"key":"follow_redirects", "value": true}, {"key":"http_method", "value":"get"}, {"key":"内容","值":"base64EncodedPOSTBody"}, {"key":"successful_status_codes", "value": [303, 808, 909]}]}]}'
舶来品 要求
 打印 舶来品 打印


# 结构有效载荷。
载荷 = {
    来源: universal_ecommerce,
    'url'(网址: 'https://www.etsy.com/listing/399423455/big-glass-house-planter-handmade-glass?ref=hp_prn&frs=1',
    用户代理类型: 桌面,
    地理位置: 美国,
    解析: ,
    解析器类型: "电子商务产品",
    上下文: [
        {
          钥匙: session_id,
          价值: 1234567890abcdef
        }
        {
          钥匙: 标题, 价值: 
            {
             接受语言: en-US,
             内容类型: 应用程序/八字节流,
             自定义标题: 自定义标题内容
            }
        },
        {
          钥匙: 饼干,
          价值: [{
              钥匙: NID,
             价值: '1234567890'
           },
           {
              钥匙: 1P_JAR,
             价值: '0987654321'
           }
         ]
        },
        {
          钥匙: follow_redirects,
          价值: 
        },
        {
          钥匙: 成功状态代码,
          价值: [303, 808, 909]
        },
        {
          钥匙: http_method,
          价值: 获取
        }
        {
          钥匙: 内容
          价值: base64EncodedPOSTBody
        }
    ],
    回调URL: 'https://your.callback.url',
}

# 获取响应。
回应 = 要求.要求(
    POST,
    'https://data.oxylabs.io/v1/queries',
    授权=(用户, pass1),
    json=载荷,
)

# 向 stdout 打印经过修饰的响应。
打印(回应.json())
<?php

$params = [
    来源 => universal_ecommerce,
    'url'(网址 => 'https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html',
    上下文 => [
        [
            钥匙 => session_id,
            价值 => 1234567890abcdef
        ],
        [
            钥匙 => 标题,
            价值 => [
                接受语言 => en-US,
                内容类型 => 应用程序/八字节流,
                自定义标题 => 自定义标题内容
            ],
        ],
        [
            钥匙 => 饼干,
            价值 => [
                [钥匙 => NID, 价值 => '1234567890'],
                [钥匙 => 1P_JAR, 价值 => '0987654321']
            ]
        ],
        [
            钥匙 => follow_redirects,
            价值 => 真实
        ],
        [
            钥匙 => 成功状态代码,
            价值 => [303, 808, 909]
        ],
        [
            钥匙 => http_method,
            价值 => 获取
        ],
        [
            钥匙 => 内容,
            价值 => base64EncodedPOSTBody
        ]
    ]
];

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "https://data.oxylabs.io/v1/queries");
curl_setopt($ch, curlopt_returntransfer, 1);
curl_setopt($ch, curlopt_postfields, json_encode($params));
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, curlopt_userpwd, "用户" . ":" . "pass1");

$headers = 矩阵();
$headers[] = "内容类型:应用程序/json";
curl_setopt($ch, curlopt_httpheader, $headers);

$result = curl_exec($ch);
回响 $result;

如果 (curl_errno($ch)) {
    回响 错误: . curl_error($ch);
}
curl_close ($ch);
?>
HTTP 方法目前不支持 Push-Pull

以下是实时模式下的相同示例:

cURLPythonPHP超文本传输协定
curl --user user:pass1 \
'https://data.oxylabs.io/v1/queries' \
-H "内容类型:应用程序/json" \
-d '{"源":"universal_ecommerce", "url":"https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html", "user_agent_type":"mobile", "context":{"key":"headers"(标题),"value"(值):["Accept-Language"(接受语言):"en-US","Content-Type":"application/octet-stream","Custom-Header":"自定义标题内容"]},{"key":"cookies","value":[{"key":"NID","值":"1234567890"},{"key":"1P JAR","值":"0987654321"},{"key":"follow_redirects", "value": true}, {"key":"http_method", "value":"get"}, {"key":"内容","值":"base64EncodedPOSTBody"}, {"key":"successful_status_codes", "value": [303, 808, 909]}]}]}'
舶来品 要求
 打印 舶来品 打印

# 结构有效载荷。
载荷 = {
    来源: universal_ecommerce,
    'url'(网址: 'https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html',
    用户代理类型: 移动,
    地理位置: 美国,
    上下文: [
        {
          钥匙: session_id,
          价值: 1234567890abcdef
        }
        {
          钥匙: 标题, 价值: 
            {
             接受语言: en-US,
             内容类型: 应用程序/八字节流,
             自定义标题: 自定义标题内容
            }
        },
        {
          钥匙: 饼干,
          价值: [{
              钥匙: NID,
             价值: '1234567890'
           },
           {
              钥匙: 1P_JAR,
             价值: '0987654321'
           }
         ]
        },
        {
          钥匙: follow_redirects,
          价值: 
        },
        {
          钥匙: 成功状态代码,
          价值: [303, 808, 909]
        },
        {
          钥匙: http_method,
          价值: 获取
        }
        {
          钥匙: 内容
          价值: base64EncodedPOSTBody
        }
    ],
}

# 获取响应。
回应 = 要求.要求(
    POST,
    'https://realtime.oxylabs.io/v1/queries',
    授权=(用户, pass1),
    json=载荷,
)

# 返回的不是包含任务状态和结果 url 的响应,而是
# JSON 响应结果。
打印(回应.json())
<?php

$params = [
    来源 => universal_ecommerce,
    'url'(网址 => 'https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html',
    上下文 => [
        [
            钥匙 => session_id,
            价值 => 1234567890abcdef
        ],
        [
            钥匙 => 标题,
            价值 => [
                接受语言 => en-US,
                内容类型 => 应用程序/八字节流,
                自定义标题 => 自定义标题内容
            ],
        ],
        [
            钥匙 => 饼干,
            价值 => [
                [钥匙 => NID, 价值 => '1234567890'],
                [钥匙 => 1P_JAR, 价值 => '0987654321']
            ]
        ],
        [
            钥匙 => follow_redirects,
            价值 => 真实
        ],
        [
            钥匙 => 成功状态代码,
            价值 => [303, 808, 909]
        ],
        [
            钥匙 => http_method,
            价值 => 获取
        ],
        [
            钥匙 => 内容,
            价值 => base64EncodedPOSTBody
        ]
    ]
];

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "https://data.oxylabs.io/v1/queries");
curl_setopt($ch, curlopt_returntransfer, 1);
curl_setopt($ch, curlopt_postfields, json_encode($params));
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, curlopt_userpwd, "用户" . ":" . "pass1");

$headers = 矩阵();
$headers[] = "内容类型:应用程序/json";
curl_setopt($ch, curlopt_httpheader, $headers);

$result = curl_exec($ch);
回响 $result;

如果 (curl_errno($ch)) {
    回响 错误: . curl_error($ch);
}
curl_close ($ch);
?>
# The whole string you submit has to be URL-encoded.

https://realtime.oxylabs.io/v1/queries?source=universal_ecommerce&url=https%3A%2F%2Fstackoverflow.com%2Fquestions%2Ftagged%2Fpython&access_token=12345abcde

并通过超级用户接口(SuperAPI):

cURLPythonPHP超文本传输协定
# GET 请求可以如下所示:
curl -k \
-x http://realtime.oxylabs.io:60000 \
-用户:pass1 \
"https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html" \
-H "X-OxySERPs-Session-Id:1234567890abcdef" \
-H "X-OxySERPs-地理位置:印度" \
-H "接受语言:en-US" \
-H "内容类型:应用程序/八字节流 \
-H "自定义标题:自定义标题内容" \
-H "Cookie:NID=1234567890; 1P_JAR=0987654321" \
-H "X-Status-Code:303, 808, 909"

# POST 请求具有相同的结构,但包含一个指定为 POST 请求的参数:
curl -X POST \
-k \
-x http://realtime.oxylabs.io:60000 \
-用户:pass1 "https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html" \
-H "X-OxySERPs-Session-Id:1234567890abcdef" \
-H "X-OxySERPs-地理位置:印度" \
-H "自定义标题:自定义标题内容" \
-H "Cookie:NID=1234567890; 1P_JAR=0987654321" \
-H "X-Status-Code:303, 808, 909"
舶来品 要求
 打印 舶来品 打印

# 定义代理口令。不要忘记在此处填写您的真实用户和密码。
代理 = {
  http: 'http://user:[email protected]:60000',
  https: 'https://user:[email protected]:60000',
}

回应 = 要求.要求(
    GET,
    'https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html',
    授权=(用户, pass1),
    核对=假的,  # 或接受我们的证书。
    代理=代理,
)

# 将结果页打印到 stdout
打印(回应.文本)

# 将返回的 HTML 保存为 result.html 文件
 (结果.html, 'w') 作为 f:
    f.写道(回应.文本)
<?php
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html");
curl_setopt($ch, curlopt_returntransfer, 1);
curl_setopt($ch, CURLOPT_PROXY, realtime.oxylabs.io:60000);
curl_setopt($ch, curlopt_proxyuserpwd, "用户" . ":" . "pass1");
curl_setopt($ch, curlopt_ssl_verifypeer, 错误);
curl_setopt($ch, curlopt_ssl_verifyhost, 错误);

$result = curl_exec($ch);
回响 $result;

如果 (curl_errno($ch)) {
    回响 错误: . curl_error($ch);
}
curl_close ($ch);
?>
超级用户接口不支持 HTTP 方法

参数值

地理位置

支持的地理位置完整列表以 CSV 格式提供 这里.

"阿拉伯联合酋长国,
"阿尔巴尼亚",
"亚美尼亚,
"安哥拉",
"阿根廷",
"澳大利亚",
...
"乌拉圭",
"乌兹别克斯坦",
"委内瑞拉玻利瓦尔共和国,
"越南",
"南非",
"津巴布韦

HTTP_Method

电子商务 Universal Scraper API 支持两种 HTTP(S) 方法: 获取 (默认)和 职位.

"GET",
"发布"

渲染

E-commerce Universal Scraper API 可渲染 Javascript 并返回渲染的 HTML 文档或 PNG 网页截图。

"html",
"png"

User_Agent_Type

下载完整列表 用户代理类型 JSON 中的值 这里.

[
  {
    "user_agent_type": "桌面",
    "描述": "随机桌面浏览器用户代理"
  },
  {
    "user_agent_type": "desktop_firefox",
    "描述": "最新版桌面火狐浏览器的随机用户代理"
  },
  {
    "user_agent_type": "桌面铬色",
    "描述": "最新版桌面 Chrome 浏览器的随机用户代理"。
  },
  {
    "user_agent_type": "桌面歌剧",
    "描述": "最新版桌面 Opera 的随机用户代理"。
  },
  {
    "user_agent_type": "桌面边缘",
    "描述": "最新版桌面 Edge 的随机用户代理"。
  },
  {
    "user_agent_type": "desktop_safari",
    "描述": "最新版桌面 Safari 的随机用户代理"。
  },
  {
    "user_agent_type": "移动",
    "描述": "随机移动浏览器用户代理"
  },
  {
    "user_agent_type": "mobile_android",
    "描述": "最新版安卓浏览器的随机用户代理"
  },
  {
    "user_agent_type": "mobile_ios",
    "描述": "最新版 iPhone 浏览器的随机用户代理"。
  },
  {
    "user_agent_type": "平板电脑",
    "描述": "随机平板电脑浏览器用户代理"
  },
  {
    "user_agent_type": "tablet_android",
    "描述": "最新版安卓平板电脑的随机用户代理"
  },
  {
    "user_agent_type": "tablet_ios",
    "描述": "最新版 iPad 平板电脑的随机用户代理"。
  }
]

账户状态

使用统计

您可以通过查询以下端点找到您的使用统计数据:

GET https://data.oxylabs.io/v2/stats

默认情况下,API 将返回所有时间的使用统计数据。添加 group_by=month 将返回月度统计数据,而 group_by=day 将返回每日数字。

此查询将返回所有时间的统计数据。您可以通过添加以下任一选项来查询每日和每月的使用量 group_by=day 或 group_by=month

cURLPythonPHP
curl --user user:pass1 'https://data.oxylabs.io/v2/stats'
舶来品 要求
 打印 舶来品 打印

# 从统计终端获取响应。
回应 = 要求.要求(
    方法=GET,
    网址='https://data.oxylabs.io/v2/stats',
    授权=(用户, pass1),
)

# 向 stdout 打印经过修饰的 JSON 响应。
打印(回应.json())
<?php

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "https://data.oxylabs.io/v2/stats");
curl_setopt($ch, curlopt_returntransfer, 1);
curl_setopt($ch, curlopt_customrequest, "GET");
curl_setopt($ch, curlopt_userpwd, "用户" . ":" . "pass1");

$result = curl_exec($ch);
回响 $result;

如果 (curl_errno($ch)) {
    回响 错误: . curl_error($ch);
}
curl_close ($ch);
?>

输出示例

{
    "数据": {
        "来源": [
            {
                "实时结果计数": "90",
                "结果数": "10",
                "标题": "universal_ecommerce"
            }
        ]
    },
    "元": {
        "group_by": 无效
    }
}

限制

以下端点将提供您的每月承诺信息以及已使用的承诺额度:

GET https://data.oxylabs.io/v2/stats/limits
cURLPythonPHP
curl --user user:pass1 'https://data.oxylabs.io/v2/stats/limits'
舶来品 要求
 打印 舶来品 打印

# 从统计终端获取响应。
回应 = 要求.要求(
    方法=GET,
    网址='https://data.oxylabs.io/v2/stats/limits',
    授权=(用户, pass1),
)

# 向 stdout 打印经过修饰的 JSON 响应。
打印(回应.json())
<?php

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "https://data.oxylabs.io/v2/stats/limits");
curl_setopt($ch, curlopt_returntransfer, 1);
curl_setopt($ch, curlopt_customrequest, "GET");
curl_setopt($ch, curlopt_userpwd, "用户" . ":" . "pass1");

$result = curl_exec($ch);
回响 $result;

如果 (curl_errno($ch)) {
    回响 错误: . curl_error($ch);
}
curl_close ($ch);
?>

输出示例

{
    "每月要求承诺": 4500000,
    "已用请求": 985000
}

响应代码

代码 现状 说明
204 无内容 您正在尝试检索一项尚未完成的任务。
400 多种错误信息 请求结构错误,可能是参数拼写错误或值无效。响应体将显示更具体的错误信息。
401 未提供授权标头"/"授权标头无效"/"未找到客户端 缺少授权标头或登录凭证不正确。
403 禁止 您的帐户无法访问此资源。
404 未找到 您要查找的职位编号已不再可用。
429 请求太多 超出费率限制。请联系您的客户经理以提高限额。
500 未知错误 无法提供服务。
524 超时 无法提供服务。
612 未定义的内部错误 出了点问题,我们未能完成您提交的任务。您可以免费再试一次,因为我们不会向您收取任何费用。 有问题 工作。如果无效,请与我们联系。
613 重试次数过多后出现故障 我们曾尝试清除您提交的作业,但在达到重试限制后放弃了。您可以免费再试一次,因为我们不会向您收取任何费用。 有问题 工作。如果无效,请与我们联系。

参考资料


免责声明 这部分内容主要来自商家。如果商家不希望在我的网站上显示,请 联系我们 删除您的内容。

最后更新于 5 月 15, 2022

您推荐代理服务吗?

点击奖杯即可颁奖!

平均评分 0 /5.计票: 0

目前没有投票!成为第一个给本帖评分的人。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

滚动到顶部