如何从 Python 中查看 Tumblr 帖子的所有注释?

Posted

技术标签:

【中文标题】如何从 Python 中查看 Tumblr 帖子的所有注释?【英文标题】:How can I see all notes of a Tumblr post from Python? 【发布时间】:2013-01-03 03:32:07 【问题描述】:

假设我查看了以下 Tumblr 帖子:http://ronbarak.tumblr.com/post/40692813… 它(目前)有 292 个音符。

我想使用 Python 脚本(例如,通过 urllib2、BeautifulSoup、simplejson 或 tumblr Api)获取所有上述注释。 一些广泛的谷歌搜索没有产生任何与 Tumblr 中的笔记提取相关的项目。

谁能指出我正确的方向,哪个工具可以让我做到这一点?

【问题讨论】:

【参考方案1】:

how to load all notes on tumblr? 也涵盖了该主题,但 unor 的回复(上图)做得很好。

【讨论】:

【参考方案2】:

如果没有 JS,您将获得仅包含注释的单独页面。对于提到的博客文章,第一页是:

http://ronbarak.tumblr.com/notes/40692813320/4Y70Zzacy

以下页面链接在底部,例如:

http://ronbarak.tumblr.com/notes/40692813320/4Y70Zzacy?from_c=1358403506 http://ronbarak.tumblr.com/notes/40692813320/4Y70Zzacy?from_c=1358383221 http://ronbarak.tumblr.com/notes/40692813320/4Y70Zzacy?from_c=1358377013 …

(参见aonclick 属性中的my answer on how to find the next URL。)

现在您可以使用各种工具来下载/解析数据。

以下 wget 命令应下载该帖子的所有注释页面:

wget --recursive --domains=ronbarak.tumblr.com --include-directories=notes http://ronbarak.tumblr.com/notes/40692813320/4Y70Zzacy

【讨论】:

【参考方案3】:

不幸的是,Tumblr API 似乎有一些限制(缺少关于 Reblogs 的元信息,注释限制为 50 个),因此您无法获取所有注释。

也禁止根据Terms of Service进行页面抓取。

“在访问或使用服务时,您不得进行以下任何操作:(...) 未经 Tumblr 事先明确书面同意,从服务中抓取服务,尤其是从服务中抓取内容(定义见下文);”

来源:

https://groups.google.com/forum/?fromgroups=#!topic/tumblr-api/ktfMIdJCOmc

【讨论】:

as defined below 但是,该术语的定义在哪里?我找不到它...【参考方案4】:

就像 Fabio 暗示的那样,最好使用 API。

如果出于某种原因您不能,那么您将使用的工具将取决于您想对帖子中的数据做什么。

对于数据转储:urllib 将返回您想要的页面的字符串 在 html 中寻找特定部分:lxml 还不错 在不守规矩的 html 中寻找东西:绝对是美丽的汤 在某个部分中查找特定项目:beautifulsoup、lxml、文本解析是您所需要的。 需要将数据放入数据库/文件中:使用scrapy

Tumblr url 方案很简单:url/scheme/1、url/scheme/2、url/scheme/3 等...直到您到达帖子的末尾并且服务器不再返回任何数据.

因此,如果您打算以暴力方式进行抓取,您可以轻松地告诉脚本转储硬盘上的所有数据,直到内容标签为空为止。

最后一句忠告,请记住在你的脚本中放一个小的 sleep(1000),因为你可能会给 Tumblr 服务器带来一些压力。

【讨论】:

感谢 Lynx-Lab。我想做的就是从我的一篇热门帖子中获取所有笔记,这样我就可以创建一个所有转发它的人的 dgraph(以及从谁转发)。我认为以上内容不属于报废类别,但我不确定如何获取所有的笔记。 欢迎您 User1850727。我把它叫做抓取,因为只要你不使用 tumblr api,你就需要获取内容然后解析它。您可以使用 urllib 获取 all 数据,然后使用上述任何方法来选择。请记住@Fabio 对服务条款的评论。

以上是关于如何从 Python 中查看 Tumblr 帖子的所有注释?的主要内容,如果未能解决你的问题,请参考以下文章

将 Javascript 小部件添加到单个 Tumblr 帖子

使用Tumblr Like按钮和无限滚动

如何显示 JSON 错误消息?

PHP 将Tumblr帖子嵌入网站

使用带有无限滚动的 Tumblr Like 按钮

在 Android 上像 tumblr 一样延迟加载图像