如何从命令行检索推文?


11

有没有一种简单的方法可以从命令行检索某人的推文?

该帐户将是公共帐户,命令(或脚本,如果需要)将检索全部或指定数量的最新推文到文本文件,每行一条推文,第一行中没有元数据,而没有元数据。

不使用API​​,只能使用bash。


使用Python API,简单又甜美
BigSack 2012年

不是我喜欢的方式,但是出于好奇,哪个python API,任何链接还是它在存储库中?
Strapakowsky

1
有python-twitter API包装器。
jokerdino

Answers:


7

从截止日期开始,Twitter将在没有OAuth密钥的情况下不允许您进入其API。但是,作为解决方法,您可以使用Search API。它是RESTful的,因此您可以curl用来检索JSON格式的搜索结果。例如,如果您想检索@java的推文,并将其保存到file ~/.tweets,则可以使用以下代码行:

curl http://search.twitter.com/search.json?q=from:java&page=1&rpp=10&callback=? >> $HOME/.tweets

您可以使用任何JSON解析器来解析文件。


rpp参数是要检索AF鸣叫次数。callback是要在生成的JSON上执行的javascript函数。如果您没有将api与JavaScript一起使用,则可以将其保留为?,但不要将其删除。我会导致错误。有关Search api的更多指南,请访问https://dev.twitter.com/docs/api/1/get/search

有一些工具可以从命令行界面解析JSON。尽管我从未使用过,但是我将放置一些指向某些资源的链接,以帮助您找到最合适的工具:

还有一点注意,使用某些Python或Ruby(或其他)更快。


看起来不错,谢谢@g_kaya。例如,如何指定所有推文,或允许的最大数量,或400条推文?什么是回调和rpp选项?您可以推荐命令行JSON解析器吗?
Strapakowsky

我已根据您的问题编辑了答案。希望对您

我很高兴它们是否有用,不客气:)

不再工作
迪恩·米汉

1
的“错误”:[{ “消息”:“Twitter的REST API V1不再活动请迁移到API V1.1 dev.twitter.com/docs/api/1.1/... }]}
行列

5

如果您不想使用Twitter API,则可以使用bash脚本获取Twitter配置文件的RSS feed,然后从那里进行格式化。

由于Twitter API已弃用RSS提要,因此您可以通过使用搜索结果生成RSS提要来解决此问题。

是我的推文RSS提要


但是,您将必须整理必要的bash脚本。从获取RSS提要到根据您的要求格式化推文。


谢谢@jokerdino。如果可以访问原始文件,则可以格式化文件。正如我在这里询问的那样(webapps.stackexchange.com/questions/34066/…),曾经有一个带有所有tweet的xml,但是没有更多了。rss提要的时间范围有限,例如,我找不到如何从发送的链接中下载所有推文。你能帮我吗?
Strapakowsky 2012年

1
显然,您只能访问不超过9天的推文。无法通过搜索甚至API无法获得任何比此更旧的信息。
jokerdino

您确定没有办法使推文的发布时间超过9天吗?我在这里提出了一个问题:webapps.stackexchange.com/questions/34070/…– Strapakowsky
2012年

直接转到用户页面可让您继续向下滚动,以便javascript可以无限制地加载下一页。可以利用它检索所有推文吗?
Strapakowsky

此链接说,使用搜索API,您最多只能获取一个星期以前的推文。而且我不确定要使用JavaScript来获取推文。据我了解,您从时间轴上看不到超过3000条左右的推文。
jokerdino

2

这是我为屏保使用的脚本

#!/bin/bash

user="$1"
user="${user:=pontifex_pl}"

last_status_url=$(lynx -dump https://twitter.com/$user \
    | grep -i "$user/status/" \
    | head -1 \
    | awk '{print $2}')

lynx -dump "$last_status_url" \
    | grep 'Twitter:' -m1 -A4 \
    | tr -d '\n' \
    | sed -e 's/[^"]*"//' -e 's/".*//' \
    | tr -s ' '

echo

1

我制作了一个工具,几乎可以完成您所描述的工作:twitter-screen-scrape 。默认情况下,它将以JSON和元数据的形式输出,但是通过诸如underscore-cli之类的输出将所需的内容剥离掉是很简单的。

$ twitter-screen-scrape -u slang800 | underscore pluck text --outfmt text > outputfile

1

您可以通过以下方式使用python + tweepy路线:

  1. 创建自己的Twitter应用程序(获取API密钥)
  2. 为您的Twitter帐户创建访问令牌
  3. 将这样的脚本与您的凭据一起使用:https : //gist.github.com/yanofsky/5436496

我刚刚测试了它,效果很好。但是,有些用户会保护自己的推文,因此可能无法让您下载所有内容。但这是Twitter的功能。

限制仍然是3200,您将获得CSV文件。


1

twarc如果您想存档Nassim Nicholas Taleb所使用的推文,则可以举个例子。

twarc timeline nntaleb --format csv> taleb.csv 

您也可以使用其他格式: --format {json,csv,csv-excel}

如何配置twarcAPI不幸的 是,获取完整推文的唯一方法是使用该应用,即使该应用是透明的,您也需要进行初始设置和配置,您还需要申请API

自2018年7月起,您必须申请Twitter开发者帐户并获得批准,然后才能创建新应用程序。

一旦获得了应用程序密钥,就可以twarc使用configure命令确定它们的含义。

twarc configure

这将存储在一个名为您的凭据.twarc在你的home目录,所以你不必保持进入他们。如果你宁愿直接供给他们,你可以将它们在环境中(CONSUMER_KEYCONSUMER_SECRETACCESS_TOKENACCESS_TOKEN_SECRET),或者使用命令行选项(--consumer_key--consumer_secret--access_token--access_token_secret)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.