Acquire

返回博客

SERP 爬虫 API 快速入门指南

Maryia Stsiopkina

2021-12-21

SERP 爬虫 API 是一种强大的工具,旨在通过领先的搜索引擎以实时模式提取大量的公共数据。凭借坐标级的精度,您可以使用 SERP 爬虫 API 来访问不同的搜索引擎页面,例如常规搜索、酒店空房情况、关键字页面和其他数据类型。SERP 爬虫 API 是许多商业案例的最佳选择,包括广告数据跟踪、品牌监控和其他功能。

阅读此快速入门指南,了解 SERP 爬虫 API、它的技术特点、它的运作方式,以及如何开始使用。

您能够通过SERP爬虫API获得什么?

  • 通过主要的 SERP 收集关键数据点。SERP 爬虫 API 旨在通过诸如广告、图片、酒店、关键字数据、新闻等搜索引擎页面获取数据。您可以通过 SERP 提取以下数据点:原生和付费结果、相关问题、头条新闻、精选片段、知识库、当地特色包、工作列表广告、旋转木马和图像。

  • 精确的地理位置定位。使用我们的 SERP 爬虫 API ,在全球超过 1.02 亿个代理网络的帮助下,您可以进行无限数量的请求。您可以从 195 个国家收集国家、城市或坐标级别的 SERP 数据。 

  • 已获专利的代理轮换工具可以规避封锁。Oxylabs 的已获专利的代理轮换工具使您能够模拟类人行为,并避开您要抓取的网站实施的反抓取措施和封锁。所有这些因素都显著增加了您的抓取成功率。

  • 结构化解析数据。SERP 爬虫 API 易于适应 SERP 布局的任何变化。SERP 爬虫 API 让您以方便的 JSON 和 CSV 格式接收您的数据。我们所有的抓取器和解析器都是最新版本,并不断进行升级。

  • 自定义存储。通过 SERP 爬虫 API,您可以将您的结果直接传送到您的云存储中。我们支持 Amazon S3 和谷歌云存储器,然而,如果您想使用其他存储类型,我们愿意与您讨论。

  • 24/7 全天候支持。无需担心,您将在任何时候获得您所有问题的解答。我们的支持团队或您的专职客户经理将帮助解决您在网络抓取操作中出现的任何问题。

数据来源*

通过SERP爬虫API,您可以从领先的搜索引擎获得JSON和CSV格式的结构化数据。公共数据源包括:

  • 原生

  • 受欢迎产品

  • 付费

  • 视频

  • 产品列表广告

  • 图片

  • 相关问题

  • 精选片段

  • 当地特色包

  • 头条新闻

  • 酒店数据

  • 餐厅数据

  • 菜谱

  • 工作

  • 知识图

  • 相关搜索

  • 搜索信息

  • 其他功能

*所有数据来源将在购买产品后提供。

SERP爬虫API用例

  • SEO 监控。通过 SERP 爬虫 API ,您可以在坐标层面上收到任何所需关键词(无论任何领域)的快速实时结果。

  • 品牌监控。通过搜索页面、关键字页面和其他页面类型接收任何搜索查询的数据,以监控品牌提及或产品仿冒。

  • 广告数据跟踪。通过位置和设备精确的搜索结果获取任何关键字的广告数据。

SERP 爬虫 API - 它是如何运作的?

您无需开发和维护解析脚本。SERP Scraper API非常容易开始使用。它包括四个主要步骤:

  1. 确定搜索阶段

  2. 选择地理位置、页面类型(搜索页面、图片、酒店等)和其他参数

  3. 发送 GET请求

  4. 通过REST API直接接收数据或转到云

身份验证

SERP爬虫API使用基础的HTTP身份验证,需要一个用户名和密码。这是开始使用这个工具的最简单方法之一。以下代码示例显示了发送一个GET请求的方式,以使用实时方法从搜索引擎获取数据。

*如需了解实时集成方法的更多信息,请继续阅读。

curl --user "USERNAME:PASSWORD" 'https://realtime.oxylabs.io/v1/queries' -H "Content-Type: application/json" -d '{"source": "SEARCH_ENGINE_search", "domain": "com", "query": "shoes"}'

*对于此示例,您需要指定确切的来源,以找到可用的来源。

集成方法

SERP爬虫API提供三种主要的集成方法:Push-Pull、Realtime和SuperAPI,每一种都有独特的好处。

Push-Pull

这种数据交付方法是最简单的,同时也是最可靠的方法之一。在这种方法下,您向我们发送一个查询,我们返回您的工作 id,工作完成后,您可以使用这个 id 从/results端点获得内容。您可以自己检查作业的状态,或者设置一个监听器,一旦数据准备好被收集,监听器会自动向您发送回调消息。这种方法不但节能,其规模还可轻松扩大。这种方法提供了以下功能:

  • 单一查询。我们的端点将处理一个关键字或 URL 的单一查询。API 将向您发送一条确认消息,包括工作 id 和其他信息。在这个 id 的帮助下,您可以手动检查您的工作状态。

  • 检查工作状态。如果您在查询中包含 callback_url,抓取任务完成后,我们将向您发送内容的链接。如果您的查询不包含 callback_url,您应该自己检查工作状态。为此,您需要使用响应消息 rel:self 下 href 中的 URL。 

  • 检索工作内容。一旦工作内容准备就绪,您便可使用 rel:results 下 href 中的 URL 来获取。 

  • 批量查询。SERP 爬虫 API 可以对多个关键字执行查询,每批最多可执行 1000 个关键字。为此,您必须发布查询参数作为 JSON 主体的数据。系统会将每个关键字作为一个单独的请求进行处理,并为每个请求返回唯一的工作 id。 

  • 获取通知者 IP 地址列表。为了将向您发送回调消息的 IP 列入白名单,您应该 GET这个端点。

  • 上传至存储器。抓取的内容默认存储在我们的数据库中。要检索结果,您需要查询我们的端点。您也可以通过使用自定义存储功能将所有数据直接迁移到您的存储空间。

  • 回调。当数据收集任务完成后,我们会向您的计算机发送一个回调请求,并向您提供一个 URL,以获得抓取的数据。

在这个快速入门指南中,我们将提供一个示例,说明如何使用 Push-Pull 集成方法和 cURL 库与 SERP 爬虫 API 进行交互来提出请求。我们将从您选择的美国地理位置的搜索引擎中提取结果。要找到所有支持的搜索引擎来源,请参考我们的文档。*

*完整文档将在购买产品后提供。

单一查询请求的示例:

curl --user "USERNAME:PASSWORD" 'https://data.oxylabs.io/v1/queries' -H "Content-Type: application/json" -d '{"source": "SERP_SCRAPER_API_SOURCE", "domain": "com", "query": "shoes", "geo_location": "United States"}'

最受欢迎的搜索引擎也支持立即可用的数据解析。如果您希望得到解析后的结构化数据,而不是页面的HTML文档,请添加"parse": true作为参数。

初始响应输出的样例:

{
  "callback_url": null,
  "client_id": 1,
  "created_at": "2021-09-30 12:11:22",
  "domain": "com",
  "geo_location": "United States",
  "id": "6849314714636265473",
  "limit": 10,
  "locale": null,
  "pages": 1,
  "parse": false,
  "parser_type": null,
  "render": null,
  "url": null,
  "query": "shoes",
  "source": "SERP_SCRAPER_API_SOURCE",
  "start_page": 1,
  "status": "pending",
  "storage_type": null,
  "storage_url": null,
  "subdomain": "www",
  "content_encoding": "utf-8",
  "updated_at": "2021-09-30 12:11:22",
  "user_agent_type": "desktop",
  "session_info": null,
  "statuses": [],
  "_links": [
    {
      "rel": "self",
      "href": "http://data.oxylabs.io/v1/queries/6849314714636265473",
      "method": "GET"
    },
    {
      "rel": "results",
      "href": "http://data.oxylabs.io/v1/queries/6849314714636265473/results",
      "method": "GET"
    }
  ]
}

初始响应表明,我们的系统已创建该工作的特定抓取网站。也就是说,它还显示了所有的工作参数和链接,可以检查工作的进展情况或下载内容的位置。

为了检查工作是否"status": "done",您可以使用["_links"][0]["href"]的链接,即为http://data.oxylabs.io/v1/queries/6849314714636265473。

如何检查工作状况的示例:

curl --user "USERNAME:PASSWORD" 'http://data.oxylabs.io/v1/queries/6849314714636265473'

响应将包含与初始响应相同的数据。如果工作是"status": "done",我们可以使用[“_links”][1][“href”]的链接来检索内容,即为http://data.oxylabs.io/v1/queries/6849322054852825089/results。

如何检索数据的示例:

curl --user "USERNAME:PASSWORD" 'http://data.oxylabs.io/v1/queries/6849314714636265473/results'

响应HTML数据输出的样例:

{
  "results": [
    {
      "content": "<html>CONTENT</html>"
      "created_at": "2021-09-30 12:11:22",
      "updated_at": "2021-09-30 12:11:30",
      "page": 1,
      "url": "SEARCH_ENGINE_URL",
      "job_id": "6849314714636265473",
      "status_code": 200,
    }
  ]
}

JSON 格式的响应解析数据输出的样例:

{
    "results": [
        {
        "content": {
          "url": "SEARCH_ENGINE_URL",
          "page": 1,
          "results": {
            "pla": [
              {
                "pos": 1,
                "url": "https://www.dior.com/en_us/products/couture-3SN231YXX_H865_T48-b22-sneaker-",
                "price": "$1,300.00",
                "title": "DIOR B22 Sneaker White And Blue Technical Mesh And Gray Calfskin - Size 48 - Men",
                "seller": "Dior.com",
                "url_image": "",
                "image_data": "",
                "pos_overall": 1
              },
              {...}
            ],
            "paid": [],
            "organic": [
              {
                "pos": 1,
                "url": "https://www.shoes.com/",
                "desc": "Deals up to 75% off along with FREE Shipping above $50 on shoes, boots, sneakers, and sandals at Shoes.com. Shop top brands like Skechers, Clarks, ...‎Women · ‎Men · ‎Kids' Shoes · ‎Return Policy",
                "title": "Shoes, Sneakers, Sandals, Boots Up To 75% Off | Shoes.com",
                "url_shown": "https://www.shoes.com",
                "pos_overall": 22
              },
              {
                "pos": 2,
                "url": "https://www.rackroomshoes.com/",
                "desc": "Shop in-store or online for name brand sandals, athletic shoes, boots and accessories for women, men and kids. FREE shipping with $65+ online purchase.",
                "title": "Rack Room Shoes: Shoes Online with Free Shipping*",
                "url_shown": "https://www.rackroomshoes.com",
                "pos_overall": 23
              },
              {...}
            ],
            "local_pack": [
              {
                "phone": "(620) 331-9985",
                "title": "Shoe Dept.",
                "rating": 4.1,
                "address": "Independence, KS",
                "subtitle": "Shoe store",
                "pos_overall": 19,
                "rating_count": 33
              },
              {...}
            ],
            "related_searches": {
              "pos_overall": 36,
              "related_searches": [
                "shoes online",
                "shoes websites",
                "shoes for girls",
                "nike shoes",
                "shoes for men",
                "shoes drawing"
              ]
            },
            "related_questions": [
              {
                "pos": 1,
                "search": {
                  "url": "/search?gl=us&hl=en&q=What%27s+the+best+online+shoe+store%3F&sa=X&ved=2ahUKEwiMv-fD1abzAhXTK7kGHWYCBpAQzmd6BAgLEAU",
                  "title": "What's the best online shoe store?"
                },
                "source": {
                  "url": "https://www.thetrendspotter.net/online-shoe-stores/",
                  "title": "25 Best Online Shoe Stores for Looking Stylish - The Trend Spotter",
                  "url_shown": "https://www.thetrendspotter.net › online-shoe-stores"
                },
                "question": "What's the best online shoe store?",
                "pos_overall": 24
              },
              {...}
            ],
            "search_information": {
              "query": "shoes",
              "showing_results_for": "shoes",
              "total_results_count": 3090000000
            },
            "total_results_count": 3090000000
          },
          "last_visible_page": 10,
          "parse_status_code": 12000
        },
        "created_at": "2021-09-30 12:11:22",
        "updated_at": "2021-09-30 12:11:28",
        "page": 1,
        "url": "SEARCH_ENGINE_URL",
        "job_id": "6849314714636265473",
        "status_code": 200
        }
    ]
  }

如果您希望我们的系统在工作自动完成后ping您的服务器,则可以立即检索数据。请使用额外的"callback_url":"YOUR_CALLBACK_LISTENER_IP"参数,并参考我们在购买产品后提供的文档,设置您的回调监听器。如果您希望将数据直接送到您的云存储,则需要使用额外的"storage_type"和"storage_url"参数。要完全设置交付给云存储,请参考upload-to-storage文档。

Realtime

虽然push-pull法是一个两步过程,但实时性要求用户在整个过程中与我们的终端保持一个开放的连接。当您向我们发送查询时,连接保持开放,而我们正在获取内容并将其返回给您。

样例:

curl --user "USERNAME:PASSWORD" 'https://realtime.oxylabs.io/v1/queries' -H "Content-Type: application/json" -d '{"source": "SERP_SCRAPER_API_SOURCE", "domain": "com", "query": "shoes", "geo_location": "United States"}'

返回到开放连接上的响应体示例:

{
  "results": [
    {
      "content": "<html>
      CONTENT
      </html>"
      "created_at": "2019-10-01 00:00:01",
      "updated_at": "2019-10-01 00:00:15",
      "id": null,
      "page": 1,
      "url": "SERP URL",
      "job_id": "12345678900987654321",
      "status_code": 200
    }
  ]
}

SuperAPI

这个方法与Realtime有很多共同之处,但您应该使用HTML Crawler作为代理,并非将数据上传到我们的端点。为了获取内容,您应该设置一个代理端点,并向所需的URL发出GET请求。您的数据将通过开放连接送达您的手中。

SuperAPI请求示例:

curl -k -x realtime.oxylabs.io:60000 -U USERNAME:PASSWORD -H "X-Oxylabs-Geo-Location: United States" "SEARCH_ENGINE_URL"

参数值*

* 所有参数将在购买产品后提供。

参数 描述 默认值
source 数据来源
url or query 直接 URL(链接)或关键词取决于来源。
user_agent_type 设备类型和浏览器。 desktop
geo_location 用于检索数据的代理地理位置。
locale 区域设置,如 Accept-Language 标头所预期。
render 启用 JavaScript 渲染。当目标需要 JavaScript 加载内容时使用它。只通过 Push-Pull(又称回调)回调)方法工作。这个参数有两个可用值:html(获得原始输出)和 png(获得一个Base64 编码的屏幕截图)。
parse true 将从支持此参数的来源返回至已解析的数据。
content_encoding 如果您要下载图片,请添加这个参数。 base64
context:session_id 如果您想在多个请求中使用同一个代理,则可使用这个参数。只要把您的会话设置成您喜欢的任何字符串,我们将为这个 ID 分配一个代理,保留长达 10 分钟。在此之后,如果您用相同的会话 ID 提出另一个请求,一个新的代理将被分配给这个特定的会话 ID。
callback_url 您的回调端点的 URL。
storage_type 存储器服务提供者。我们支持 Amazon S3 和谷歌云存储器。这些存储器提供者的 storage_type 参数值相应为 s3 和gcs。完整建置可以在购买后提供的文档中查询。该功能只通过 Push-Pull(回调)方法工作。
storage_url 您的存储桶名称。只通过 Push-Pull(回调)方式工作。

响应代码

响应 错误信息 描述
204 无内容 您正试图检索一项尚未完成的工作。
400 多个错误信息 错误请求结构可能是参数拼写错误或无效值。响应体将有一个更具体的错误信息。
401 “未提供授权头”/“无效授权头”\“未找到客户” 缺少授权头或登录凭证不正确。
403 禁用 您的账户无法访问此资源。
404 未找到 您正在寻找的工作编号已不存在。
429 请求次数太多 超出了速率上限。请联系您的客户经理以增加上限。
500 未知错误 服务不可用。
524 服务不可用 服务不可用。
612 未定义的内部错误 出了点问题,我们没能处理您提交的工作。您可以重试一次,但无需支付额外费用,因为我们不对未能完成的工作收费。如果这不起作用,请与我们联系。
613 重试太多次后出现故障 我们尝试抓取您提交的工作,但在达到我们的重试上限后取消。

总结

Oxylabs 的 SERP 爬虫 API 允许高效率地从主要搜索引擎页面上抓取关键数据点,获取的数据将以结构化和方便的格式呈现。凭借一个庞大的代理池,并由我们 24/7 全天候支持团队的协助下,您可以毫无压力地完成您的抓取工作。轻松执行关键字数据收集、品牌监控和广告数据跟踪,仍然可以在坐标层面上获得精确结果。使用三种简单的集成方法和我们在购买后提供的文档,即可开始使用。

希望您觉得这个指南对您有帮助。如果您对SERP爬虫API或Oxylabs的其他产品有任何疑问,请通过support@oxylabs.io在线聊天联系我们。

关于作者

Maryia Stsiopkina

文案

Maryia Stsiopkina 在 Oxylabs 担任一名初级文案。随着她对写作的热情逐渐发展,她在不同的时间点上不是写令人毛骨悚然的侦探故事,就是写儿童童话故事。最终,她发现自己进入了科技仙境,拥有无数隐藏的领域值得他去探索。在业余时间,她用望远镜观鸟(有些人误以为是跟踪,这就是为什么 Maryia 有时会发现自己处于尴尬的境地),制作花卉饰品,并品尝很多泡菜和绿橄榄。

Oxylabs博客上的所有信息均按“原样”提供,仅供参考。对于您使用Oxylabs博客中包含的任何信息或其中可能链接的任何第三方网站中包含的任何信息,我们不作任何陈述,亦不承担任何责任。在从事任何类型的抓取活动之前,请咨询您的法律顾问,并仔细阅读特定网站的服务条款或取得抓取许可。

在这篇文章


  • 您能够通过SERP爬虫API获得什么?

  • 数据来源*

  • SERP爬虫API用例

  • SERP 爬虫 API - 它是如何运作的?

  • 身份验证

  • 集成方法

  • 参数值*

  • 响应代码

  • 总结

选择Oxylabs®,业务更上一层楼


联系我们

经过认证的数据中心和上游提供商

关注我们

  • we chat qr code

    微信公众号

    微信号

    oxychina


隐私政策

oxylabs.cn© 2022 保留所有权利©