我正在使用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'],
现在我想摆脱属性参数,这样我就可以简单地启动脚本并在脚本本身中指定属性。我的最终目标是仅使用一个脚本从多个属性中获取数据。
我试图重复与日期相同的程序,但没有运气。毋庸置疑,我是编码的初学者。
答案 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'的参数功能
希望这有帮助!