如何从 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 …(参见a
的onclick
属性中的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、文本解析是您所需要的。 需要将数据放入数据库/文件中:使用scrapyTumblr url 方案很简单:url/scheme/1、url/scheme/2、url/scheme/3 等...直到您到达帖子的末尾并且服务器不再返回任何数据.
因此,如果您打算以暴力方式进行抓取,您可以轻松地告诉脚本转储硬盘上的所有数据,直到内容标签为空为止。
最后一句忠告,请记住在你的脚本中放一个小的 sleep(1000),因为你可能会给 Tumblr 服务器带来一些压力。
【讨论】:
感谢 Lynx-Lab。我想做的就是从我的一篇热门帖子中获取所有笔记,这样我就可以创建一个所有转发它的人的 dgraph(以及从谁转发)。我认为以上内容不属于报废类别,但我不确定如何获取所有的笔记。 欢迎您 User1850727。我把它叫做抓取,因为只要你不使用 tumblr api,你就需要获取内容然后解析它。您可以使用 urllib 获取 all 数据,然后使用上述任何方法来选择。请记住@Fabio 对服务条款的评论。以上是关于如何从 Python 中查看 Tumblr 帖子的所有注释?的主要内容,如果未能解决你的问题,请参考以下文章