我该如何从Python中查看Tumblr帖子的所有笔记?

9

假设我看到以下的Tumblr帖子:http://ronbarak.tumblr.com/post/40692813…
它(目前)有292个注释。

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

有人可以指点我使用哪种工具来实现这个目标吗?

4个回答

7
很遗憾,看起来Tumblr API存在一些限制(缺少有关Reblogs的元信息,注释仅限于50),因此您无法获取所有注释。
根据服务条款,还禁止进行页面抓取。

"在访问或使用服务时,您不得执行以下任何操作:(...)从服务中抓取内容(如下所定义),尤其是抓取内容,未经Tumblr的明确书面同意;"

来源:

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


如下所定义。但是,这个术语的定义在哪里呢?我找不到它... - Nearoo

5
没有JS,你只能得到仅包含笔记的独立页面。对于上述博客文章,第一页将是:

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

以下页面在底部链接,例如:(参见我的答案,了解如何在aonclick属性中找到下一个URL)现在,你可以使用各种工具来下载/解析数据。以下wget命令应下载该帖子的所有笔记页面:
wget --recursive --domains=ronbarak.tumblr.com --include-directories=notes http://ronbarak.tumblr.com/notes/40692813320/4Y70Zzacy

3

正如Fabio所暗示的那样,最好使用API。

如果由于某种原因您无法使用API,则所使用的工具将取决于您希望对帖子中的数据执行什么操作。

  • 用于数据转储:urllib将返回您想要的页面的字符串
  • 查找HTML中的特定部分:lxml非常好用
  • 查找混乱的HTML内容:绝对需要beautifulsoup
  • 在一个部分中查找特定的项目:需要beautifulsoup、lxml和文本解析。
  • 需要将数据放入数据库/文件中:使用scrapy

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

因此,如果您要通过蛮力方式进行爬取,您可以轻松地告诉您的脚本将所有数据转储到硬盘上,直到例如内容标记为空为止。

最后一个建议,请记得在您的脚本中添加一个小的sleep(1000),因为您可能会在Tumblr服务器上施加一些压力。


感谢Lynx-Lab。 我想做的就是获取我一篇热门文章中的所有笔记,以便创建一个包含所有转载它的人(以及谁从谁那里转载)的Dgraph图。 我不认为以上属于网页抓取范畴,但我不知道该如何获取所有笔记。 - user1850727
欢迎您,User1850727。我称之为“爬取”,因为只要您不使用Tumblr API,就需要获取内容并解析它。您可以使用urllib来获取所有数据,然后使用上述任何一种方法进行选择。请记住@Fabio关于服务条款的评论。 - Lynx-Lab

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接