python中的批量请求到Google Search Console API [英] Batch Request in python to Google Search Console API

查看:69
本文介绍了python中的批量请求到Google Search Console API的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在过去的两天里,我一直在尝试使用Python向Google Search Console API发送批处理请求,但是我不确定该文档及其处理方法.

For the past two days I've been trying to send a batch request to Google Search Console API in Python but I am unsure of the documentation and how to proceed.

我不确定要遵循哪些文件.

I'm not sure which documents to follow.

https://developers.google.com/api-client-库/python/guide/batch

https://developers.google.com/webmaster-tools/v3/how-tos/batch

第一个文档说使用这种格式:

The first document says to use this format:

from apiclient.http import BatchHttpRequest

def insert_animal(request_id, response, exception):
  if exception is not None:
    # Do something with the exception
    pass
  else:
    # Do something with the response
    pass

service = build('farm', 'v2')

batch = service.new_batch_http_request(callback=insert_animal)

batch.add(service.animals().insert(name="sheep"))
batch.add(service.animals().insert(name="pig"))
batch.add(service.animals().insert(name="llama"))
batch.execute(http=http)

但是第二篇文章说要这样做:

but the second post says to do this:

POST /batch HTTP/1.1
Authorization: Bearer your_auth_token
Host: www.googleapis.com
Content-Type: multipart/mixed; boundary=batch_foobarbaz
Content-Length: total_content_length

--batch_foobarbaz
Content-Type: application/http
Content-ID: <item1:12930812@barnyard.example.com>

GET /farm/v1/animals/pony

--batch_foobarbaz
Content-Type: application/http
Content-ID: <item2:12930812@barnyard.example.com>

PUT /farm/v1/animals/sheep
Content-Type: application/json
Content-Length: part_content_length
If-Match: "etag/sheep"

{
  "animalName": "sheep",
  "animalAge": "5"
  "peltColor": "green",
}

--batch_foobarbaz
Content-Type: application/http
Content-ID: <item3:12930812@barnyard.example.com>

GET /farm/v1/animals
If-None-Match: "etag/animals"

--batch_foobarbaz--

但是我不确定最后一个要我使用此代码吗?

but I'm not sure the last one wants me to do with this code?

另外,当尝试在Request包中发出Post请求时,我可以在哪里输入body参数?

Also, when trying to make a Post request in Request package, where can I enter a body parameter?

谢谢.

推荐答案

这是一种用于发出GET请求的技术,并且POST请求可能非常相似.在此示例中,我们向搜索分析API发出了批量请求.

Here's a technique for making GET requests, and presumably POST requests would be very similar. In this example we are making batch requests to the search analytics API.

#-------------------------------------#
# Define property and request payloads
#-------------------------------------#

web_property = 'https://example.com/'

request_body_1 = {
  "startDate": "2015-01-01",
  "endDate": "2016-01-01",
  "dimensions": ["country", "device"]
}
request_body_2 = {
  "startDate": "2016-01-01",
  "endDate": "2017-01-01",
  "dimensions": ["country", "device"]
}

#--------------------------------#
# Make container to store results
#--------------------------------#

class DataContainer:
    def __init__(self):
        self.data = []

    def callback(self, request_id, response, exception):
        if exception is not None:
            # do something ...
            pass
        else:
            print(request_id)
            self.data.append(response)

dc = DataContainer()

#--------------------------------#
# Build and send batch requests
#--------------------------------#

batch = service.new_batch_http_request(callback=dc.callback)

batch.add(service.query(siteUrl=web_property,
                        body=request_body_1))
batch.add(service.query(siteUrl=web_property,
                        body=request_body_2))

batch.execute()
print(dc.data)

这篇关于python中的批量请求到Google Search Console API的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆