通过python脚本在Google Search Console中查询更多属性

时间:2016-08-26 07:56:30

标签: python python-2.7 google-api google-webmaster-tools google-api-python-client

我正在使用Python(2.7)脚本通过API Google Search Console数据下载。我想在启动脚本时删除属性和日期参数:

>python script. py ´http://www.example.com´ ´01-01-2000´ ´01-02-2000´

对于后者,我设法导入timedelta并注释掉引用该参数的行:

argparser = argparse.ArgumentParser(add_help=False)
argparser.add_argument('property_uri', type=str,
                        help=('Site or app URI to query data for (including '
                        'trailing slash).'))
# Start and end dates are commented out as timeframe is dynamically set
'''argparser.add_argument('start_date', type=str,
                        help=('Start date of the requested date range in '
                        'YYYY-MM-DD format.'))
argparser.add_argument('end_date', type=str,
                        help=('End date of the requested date range in '
                        'YYYY-MM-DD format.'))'''

now = datetime.datetime.now()   
StartDate = datetime.datetime.now()- timedelta(days=14) 
EndDate = datetime.datetime.now()- timedelta(days=7)

From = StartDate.strftime('%Y-%m-%d' )

To = EndDate.strftime('%Y-%m-%d' ) 

request = {
        'startDate': StartDate.strftime('%Y-%m-%d' ),
        'endDate': EndDate.strftime('%Y-%m-%d' ),
        'dimensions': ['query'],

现在我想摆脱属性参数,这样我就可以简单地启动脚本并在脚本本身中指定属性。我的最终目标是仅使用一个脚本从多个属性中获取数据。

我试图重复与日期相同的程序,但没有运气。毋庸置疑,我是编码的初学者。

1 个答案:

答案 0 :(得分:0)

我认为我可以提供帮助,因为我在使用谷歌提供的示例脚本作为指导时遇到了同样的问题。我认为你从中得到了哪些代码?

问题是该脚本使用googleapiclient库中的sample_tools.py脚本,该脚本旨在抽象出所有身份验证位,以便您可以轻松快速查询。如果你想修改代码,我建议你从头开始编写代码。

这些是我的功能,我可以从您可能会觉得有用的各种文档中拼凑出来。

第1阶段:身份验证

def authenticate_http():
    """Executes a searchAnalytics.query request.

  Args:
    service: The webmasters service to use when executing the query.
    property_uri: The site or app URI to request data for.
    request: The request to be executed.

  Returns:
    An array of response rows.
  """
    # create flow object
    flow = flow_from_clientsecrets('path to client_secrets.json',
      scope='https://www.googleapis.com/auth/webmasters.readonly',
      redirect_uri='urn:ietf:wg:oauth:2.0:oob')

   storage = Storage('credentials_file')
   credentials = storage.get()
   if credentials:
        # print "have auth code"
        http_auth = credentials.authorize(Http())
    else:
        print "need auth code"
        # get authorization server uri
        auth_uri = flow.step1_get_authorize_url()
        print auth_uri

        # get credentials object
        code_input = raw_input("Code: ")
        credentials = flow.step2_exchange(code_input)
        storage.put(credentials)

        # apply credential headers to all requests
        http_auth = credentials.authorize(Http())

    return http_auth

第2阶段:构建服务对象

def build_service(api_name, version):
    # use authenticate_http to return the http object
    http_auth = authenticate_http()

    # build gsc service object
    service = build(api_name, version, http=http_auth)
    return service

第3阶段:执行请求

def execute_request(service, property_uri, request):
    """Executes a searchAnalytics.query request.
  Args:
    service: The webmasters service to use when executing the query.
    property_uri: The site or app URI to request data for.
    request: The request to be executed.
  Returns:
    An array of response rows.
   """
    return service.searchanalytics().query(
        siteUrl=property_uri, body=request).execute()

第4阶段:主要()

def main():
    # define service object for the api service you want to use
    gsc_service = build_service('webmasters', 'v3')

    # define request
    request = {'request goes here'}

    # set your property set string you want to query
    url = 'url or property set string goes here'

    # response from executing request
    response = execute_request(gsc_service, url, request)

    print response

对于多个属性集,您只需创建一个属性集列表,然后创建一个循环并将每个属性集传递给' url' ' execute_request'的参数功能

希望这有帮助!