Python连接Google Analytics API获取数据

Google Analytics Haran 7年前 (2017-05-19) 16902次浏览 28个评论

关于API原理的部分可以看手把手教你用R连接Google Analytics的API取出数据
这一节介绍如何用Python连接Google anlaytics API去获取数据,前面大部分跟R的相同,不同的地方在于Python是引入json的密钥文件,而不是直接用服务端id和密钥。

1、假设你已经创建好了OAuth2.0客户端ID,然后将其以json格式下载:
Python连接Google Analytics API获取数据

可以看到有个json文件
Python连接Google Analytics API获取数据

 

2、然后将https://developers.google.com/analytics/devguides/reporting/core/v3/quickstart/service-py中的那段实例代码复制带本地保存,并将前面下载的json与那段代码挡在同一个路径中,然后找到key_file_location,将其改为json文件的名称
Python连接Google Analytics API获取数据

然后试运行下看有没报错,如果没报错,会返回一些数据,那就表示成功了。

3、接下来新建另一个py文件,引入上面的示例代码,代码中的第一段就是引入该示例代码,然后初始化,这里的profile_id就是GA离的view ID
Python连接Google Analytics API获取数据

然后运行下,这段代码的的意思是获取该页面每天的访问用户数
Python连接Google Analytics API获取数据

数据就提取出来了。

可以看到,在通过api获取的数据的过程中最关键的还是ga().get的函数配置,详细的可以看:https://developers.google.com/analytics/devguides/reporting/core/v3/reference


如有疑问,可以在文章底部留言或邮件(haran.huang@ichdata.com) 我~
喜欢 (9)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(28)个小伙伴在吐槽
  1. HelloAnalytics.py 运行成功,但按照你的方式新建py文件运行出错 KeyError: 'access_token'求救求救
    llw2022-07-15 23:25 回复 Windows 10 | Chrome 95.0.4638.69
    • Haran
      是否有引入HelloAnalytics.py 文件
      黄业忠2022-07-16 09:41 回复 Mac OS X | Chrome 103.0.0.0
      • 感谢您的回复,完整代码如下:import HelloAnalytics as gaapi#这个就相当于您代码里的 install_ga_demo 吧?service = gaapi.get_service('analytics', 'v3', 'scope', 'client_secrets.json') profile_id = '21415****'data = service.data().ga().get( ids='ga:'+profile_id, start_date='2022-07-01', end_date='2022-07-07', #max_results='20000', metrics='ga:users', dimensions='ga:date', sort='ga:date' #filters='ga:pagePath~/en/' ).execute()print(data['rows'])
        llw2022-07-17 00:27 回复 Windows 10 | Chrome 95.0.4638.69
        • Haran
          看起来没问题 ,你在执行单独引入的那段代码的时候,是否有打开网页去获取授权了?
          黄业忠2022-07-18 14:02 回复 Mac OS X | Chrome 103.0.0.0
          • 您指的是这个么 HelloAnalytics.py, 从来没有需要我网页授权, GA service account 貌似不需要?
            llw2022-07-18 14:32 Windows 10 | Chrome 95.0.4638.69
          • Haran
            运行HelloAnalytics.py 有没出现数据
            黄业忠2022-07-18 16:18 Mac OS X | Chrome 103.0.0.0
          • 谢谢您的回复,有数据的.但是和我在GA页面查的数据不同
            llw2022-07-18 16:39 Windows 10 | Chrome 95.0.4638.69
          • 我把HelloAnalytics.py里get_results()的 ids 直接设置成我要查看的 views id, 数据就正确啦大神可以帮我想想问题会在哪儿吗,陆陆续续研究了好久啦 :(
            llw2022-07-18 23:36 Windows 10 | Chrome 95.0.4638.69
          • Haran
            如果前面有将 views id定义为变量,那么就在get_results()调用定义的变量,如果没有,就直接使用view id。
            黄业忠2022-07-19 11:10 Mac OS X | Chrome 103.0.0.0
          • 可以问下为什么新建install_ga_demo.py,而不直接用HelloAnalytics.py,二者有什么区别,前者行数少很多
            llw2022-07-19 15:30 Windows 10 | Chrome 95.0.4638.69
          • Haran
            可以直接用
            黄业忠2022-07-19 21:11 Mac OS X | Chrome 103.0.0.0
  2. 查询出来的ga:user 为什么是新用户的数据,DAU怎么查询呢?
    @1232021-07-27 11:13 回复 Mac OS X | Chrome 92.0.4515.107
    • Haran
      完整代码是什么
      黄业忠2021-07-27 11:16 回复 Mac OS X | Chrome 92.0.4515.107
  3. 我用的是本地的测试,提示 'Expected', client.SERVICE_ACCOUNT)ValueError: ('Unexpected credentials type', None, 'Expected', 'service_account'),这是什么原因?请教,非常感谢
    chc1532019-06-09 17:08 回复 Windows 7 | Firefox浏览器 63.0
    • 秘钥或密码格式不对
      GA小站2019-06-09 21:16 回复 Mac OS X | Chrome 74.0.3729.169
  4. TimeoutError: [WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。 有梯子的情况下,还报这个错误,是什么原因呢?
    terry2019-03-31 01:23 回复 Windows 7 | Chrome 72.0.3626.81
  5. 2、然后将https://developers.google.com/analytics/devguides/reporting/core/v3/quickstart/service-py中的那段实例代码复制带本地保存,并将前面下载的json与那段代码挡在同一个路径中,然后找到key_file_location,将其改为json文件的名称----------这步操作里面,到底用的是哪个json文件呢?
    terry2019-03-09 20:15 回复 Windows 7 | Chrome 72.0.3626.81
    • 谷歌开发者后台生成的秘钥
      GA小站2019-03-14 22:22 回复 Mac OS X | Chrome 72.0.3626.121
  6. 大佬,请问:我用官方的示例代码为什么会报httplib.ResponseNotReady()的错误?
    allon2018-07-23 09:17 回复 Windows 7 | Chrome 67.0.3396.62
  7. 还有人吗,求教呀,连接不上,方便可以加个qq不
    酒窖2018-06-15 10:05 回复 Windows 10 | Chrome 64.0.3282.186
    • 用官方的demo是绝对没问题的,你检查一下你的环境配置设置
      GA小站2018-06-16 22:16 回复 Mac OS X | Chrome 67.0.3396.87
  8. [('asn1 encoding routines', 'ASN1_CHECK_TLEN', 'wrong tag'), ('asn1 encoding routines', 'ASN1_ITEM_EX_D2I','nested asn1 error')]——————————按该教程,创建了服务id、oauthid后,已下载了js文件、并在helloanalytics.py设置好路径了,但是报了上述的错误。(py3,win64;官方教程提到的包已安装)期望您的帮忙,谢谢
    leegofun2018-05-11 14:35 回复 Windows 10 | Chrome 65.0.3325.181
    • 使用的时候应该会自动打开一个授权页面,需要你手动授权后,后面的程序才能运行
      GA小站2018-05-15 14:57 回复 Mac OS X | Chrome 66.0.3359.139
  9. 提示ModuleNotFoundError: No module named 'apiclient.discovery'后来把from apiclient.discovery import build换成from googleapiclient.discovery import build可以跳转网页提示“The authentication flow has completed.”但是还报错 File "D:\Program Files\python3\lib\socket.py", line 713, in create_connection sock.connect(sa)TimeoutError: [WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。这是什么原因。
    nn912017-11-24 11:05 回复 Windows 7 | Chrome 55.0.2883.87
    • Python的错误,谷歌一下
      GA小站2017-11-24 17:02 回复 Windows 10 | Chrome 61.0.3163.100
      • 大神,谷歌不出来是不是国内对GA封杀的原因,python必须要加代理,可是怎么加?
        nn912017-11-24 17:06 回复 Windows 7 | Chrome 55.0.2883.87
        • 去找梯子(V*P*N)
          GA小站2017-11-27 08:42 回复 Windows 10 | Chrome 61.0.3163.100
    • 老铁,解决了吗
      哈哈哈哈2019-08-28 12:23 回复 Windows 10 | Chrome 76.0.3809.100