Twitter 为你发布了一些分析,我每月检查一次,但在重要的事情上它们非常有限,比如探索你的关注者图。

这就是 Datasette 的用武之地。Datasette 是一款出色的 EDA(探索性数据分析)工具,适用于任意 SQLite 数据集。您可以使用它来构建您自己的 Twitter 分析!

今天,在 Simon Willison 的提示下,我决定尝试复制他 2018 年的工作来分析他自己的 Twitter 网络。

TL;DR

你可以在这里查看我自己的数据集:https://swyx-twitter-datasette.glitch.me/twitter/tweets?_sort_descu003dfavorite_count&_facetu003dretweeted&_facetu003dfavorited&_facetu003duser&useru003d33521530&retweeted u003d1

要尝试的事情:

  • 签出选中的分面

  • 排序/隐藏单个列

  • 搜索

  • 建立 sql 过滤器(例如,喜爱_count > 100,转推_count > 100)

[图像描述](https://res.cloudinary.com/practicaldev/image/fetch/s--Ge-5Zrl3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev- to-uploads.s3.amazonaws.com/uploads/articles/kk3myn3mja87oc6y33tj.png)

请记住,所有这些都是从 sqlite 表自动生成的(它本身是通过运行twitter-to-sqlite自动生成的),大大降低了基于 GUI、基于 SQL 的 EDA 的门槛。

由于它是基于 Web 的,并且 SQL 被序列化为 URL,因此您可以轻松地与同事分享您找到的任何内容。

如何

可选:获取凭证

其中最耗时的部分将是获取 Twitter API 凭据。自 2018 年以来,该过程基本没有变化 - 在https://developer.twitter.com/上获得一个开发者帐户(可能需要一些批准时间......所以尽快解决这个问题),然后创建一个新的apphttps://apps.twitter.com/并最终获得您需要执行此操作的四个“密钥和令牌”:

[图像描述](https://res.cloudinary.com/practicaldev/image/fetch/s--6Oyowd3---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to -uploads.s3.amazonaws.com/uploads/articles/t11lhzhwf15r7kzb0vnf.png)

可选:测试您的凭证

您可以通过在本地编写一个小 Python 脚本来测试您的凭据(pip install requests_oauthlib,然后运行python script.py。我也喜欢使用venv)

from requests_oauthlib import OAuth1Session
twitter = OAuth1Session(
    client_key='FILL_ME_IN',
    client_secret='FILL_ME_IN',
    resource_owner_key='FILL_ME_IN-FILL_ME_IN',
    resource_owner_secret='FILL_ME_IN'
)
print(twitter.get(   'https://api.twitter.com/2/users/by/username/swyx').json())
print(twitter.get(   'https://api.twitter.com/2/users/1465910794114134018/following/?user.fields=public_metrics').json())

进入全屏模式 退出全屏模式

默认情况下,您只能访问 Twitter API v2 端点,但如果您需要 Twitter API v1,您可以申请提升访问权限,因为许多库和博客文章仍在 API v1 上。

从这里你可以浏览Twitter API 参考你想提取什么数据......但你不必,如果你足够同意西蒙在twitter-to-sqlite的意见!

使用 twitter-to-sqlite 抓取数据

我喜欢 Simon 如何构建 Datasette 的一件事是丰富的数据提取工具生态系统他也进行了修饰。他有标准的东西可以从他关心的许多来源中提取数据到 SQLite 中(而且,正如我已经说过的,Datasette 将它从那里一直带到一个可查看的可探索产品)。

twitter-to-sqlite也是如此:

$ pip install twitter-to-sqlite

$ twitter-to-sqlite auth
Create an app here: https://developer.twitter.com/en/apps
Then navigate to 'Keys and tokens' and paste in the following:

API key: xxx
API secret key: xxx
Access token: xxx
Access token secret: xxx

$ twitter-to-sqlite user-timeline twitter.db
Importing tweets  [#####-------------------------------]  2799/17780  00:01:39

进入全屏模式 退出全屏模式

这为您提供了一个漂亮的小twitter.db文件,其中包含您曾经制作或喜欢或转发的每条推文,这些推文仍在您的时间线上(时间线在 3,200 条推文后被切断)。您还可以使用twitter-to-sqlite followers twitter.db抓取您的关注者。

部署到故障

Simon 的旧方法依赖于现在已被弃用的 Zeit Now。 Datasette 可以在 serverful web 托管工作的任何地方工作,但是很高兴将它托管在免费的地方,因为它只是一个个人公共数据工具。 Render.com 或 Fly.io 可能会工作,但我想尝试 Glitch,因为这是Simon 的首选平台。

不幸的是,我在这里遇到了一堆问题并花了几个小时来修复它们。 TLDR;只是重新混合我的故障:

在故障上混音

这里重要的解锁是了解如何将您的 SQLite 数据库上传到 Glitch 以使其运行。您不能将其拖放到“assets”文件夹中,因为这只是用于 CDN 托管,您需要在 Glitch 构建过程中访问此文件。

我想出办法的方法是在本地克隆 git repo(与那个答案不同,Glitch 中没有更多的高级选项菜单,你必须去工具 -> 导入和导出 -> 复制项目的 Git URL),并将文件添加到 git(在不同的分支上,因为 Glitch 的特殊设置......阅读论坛上的说明)。

git clone https://<git access token>@api.glitch.com/git/swyx-twitter-datasette
cd swyx-twitter-datasette

git checkout -b addData

###
# add/replace your twitter.db file to this repo and commit it
###

git push --set-upstream origin addData

进入全屏模式 退出全屏模式

然后在 Glitch 中,您需要打开终端并执行以下操作:

git merge addData
refresh

进入全屏模式 退出全屏模式

twitter.db 应该出现在那里。

如果一切顺利,您的项目应该像我的一样运行:https://swyx-twitter-datasette.glitch.me/twitter/tweets(您可以将您的 Glitch 重命名为自定义虚荣子域),您可以探索您的心满意足!

为什么

所以。盯着一堆推文需要做很多工作。何必?

对我来说,这与推文无关。这是关于降低 EDA 的成本。当我不需要时,我会进行代表,这样当我这样做时我可以更快/更自信。

每个人都想根据数据驱动的见解进行操作,但处理数据的成本通常太高,因此数据,尤其是您自己的数据,不会被关注。

像 Datasette 这样的 EDA 工具显着降低了数据分析的成本,它具有令人惊讶的简单ELT合约:您处理提取阶段,它处理加载,并公开一个标准 UI 供您进行动态转换。

由于 UI 受到限制,但具有所有基本 EDA 功能,因此它减少了您必须执行的自定义编码量,同时为您提供了足够的灵活性来进行查询并获得任何任意需求的见解。

由于可以一目了然地查看所有数据和所有字段,因此您可以提出您甚至没有想过要问的问题。带有 Datasette 的 ELT 是倾倒你的乐高积木的数据驱动等价物。

[https://i.ytimg.com/vi/AQT6uqktdOw/maxresdefault.jpg](https://res.cloudinary.com/practicaldev/image/fetch/s--9o3mr_Ek--/c_limit%2Cf_auto %2Cfl_progressive%2Cq_auto%2Cw_880/https://i.ytimg.com/vi/AQT6uqktdOw/maxresdefault.jpg)

延伸阅读

  • 阅读数据集文档

  • 西蒙在 PyGotham 2020 上关于 Datasette 的演讲

  • 黑客新闻上的个人数据仓库

Logo

Python社区为您提供最前沿的新闻资讯和知识内容

更多推荐