Google统计在最近修改了调取页面访问信息的API,这里给出一个应用实例。
截取API中关于页面统计部分(这里略去头部的Import内容)
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).')) 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.')) def main(argv): service, flags = sample_tools.init( argv, 'webmasters', 'v3', __doc__, __file__, parents=[argparser], scope='https://www.googleapis.com/auth/webmasters.readonly') request = { 'startDate': flags.start_date, 'endDate': flags.end_date, 'dimensions': ['page'], 'rowLimit': 5000 } response = execute_request(service, flags.property_uri, request) return response def execute_request(service, property_uri, request): return service.searchanalytics().query( siteUrl=property_uri, body=request).execute() if __name__ == '__main__': main(sys.argv)
从这里我们可以看到API首先给argparser这个对象添加了三个控制台参数:property_uri, start_date, end_date。即页面的URI和起止日期。所以要执行这个API需要提供三个参数,即如下:
python search_analytics_api.py http://blog.zivers.com 2015-10-01 2015-11-01
所以我们在调用这个接口时也需要添加以上参数。获取到这些参数后,组合成request的json请求发送至execute_request方法中执行,返回response字典。
接下来就是怎么调取这个API为我们获取数据了,这里我新建了一个GAReport类,这个类中封装了调取API的wm_pages方法,使用时只需调取这个类即可:
from google.search_analytics_api import main as ga_api class GAReport(): def wm_pages(self, requestPage): try: monthly_queries = {} pageinfo = ga_api(requestPage) monthly_queries = pageinfo return monthly_queries except ValueError: return {} def wm_page(self, requestUrl, requestPage): try: pageInfo = [] rows = requestPage['rows'] for row in rows: if row['keys'][0] == requestUrl: pageInfo = [row['clicks'], row['impressions'], row['ctr'], row['position']] return pageInfo except ValueError: return []
wm_pages()方法含有一个requestPage的list参数,这个参数中包含了API所需要的三个参数,调取API处理数据后,获得的response字典存入monthly_queries中。
wm_page()方法是为了查询特定页面的访问信息而写的。实现从API返回的字典结果中查询并返回特定URL的数据并格式化成list[[row[‘clicks’], row[‘impressions’], row[‘ctr’], row[‘position’]]]格式,返回pageInfo列表。
最后只需要在程序中实例化一个GAReport对象并提供参数即可:
startDate = start_date.strftime("%Y-%m-%d") endDate = end_date.strftime("%Y-%m-%d") requestPage = ['search_analytics_api.py', host, startDate, endDate] gareport = GAReport() gm_page_info_list = gareport.wm_pages(requestPage) gm_page_info_request = gareport.wm_page(article_url, gm_page_info_list)