标签归档:Google

Google Font API国内恢复访问

Google字体服务在国内无法访问已经有几年,这引起了很多的不便。Google字体被广泛用在各类网站,尤其是需要使用英文字体的网站中。API被墙直接导致无法正常调用这些字体。以WordPress为例,为了使网站能够在国内的访问速度不被拖累,只能牺牲掉Google Font。以本站为例,尝试过用360的API替换Google的API依然访问速度不尽人意,只好使用插件将Google字体彻底屏蔽。

上午在知乎上看见Google字体在国内恢复访问的消息,十分欣喜。这是继Google Play Store、Adsense、Analytics以来又一项关键服务的解封。这又让我们看到了Google返回中国的可能。相信程序员们都能够切身的体会在技术相关的搜索方面Baidu和Google的差距有多么大吧。

看到消息之后,我也立马测试了一下,结果令人满意。

20160307134408

在各地的访问速度都还不错,解析显示为北京市谷歌(中国)公司。20160307134508

如果需要测试,也可以访问任何一个Google字体的CSS页面(例如:链接)。

使用Google Search Analytics API获取页面访问信息实例(Python)

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)