9
4

4 回答 4

7

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

根据服务条款也禁止进行页面抓取。

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

资源:

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

于 2013-01-19T17:22:40.143 回答
5

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

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

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

(请参阅我关于如何a'sonclick属性中找到下一个 URL 的答案。)

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

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

wget --recursive --domains=ronbarak.tumblr.com --include-directories=notes http://ronbarak.tumblr.com/notes/40692813320/4Y70Zzacy
于 2013-01-20T18:54:30.217 回答
3

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

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

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

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

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

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

于 2013-01-19T18:36:05.360 回答
0

如何在 tumblr 上加载所有笔记?也涵盖了这个话题,但 unor 的回应(上图)做得很好。

于 2016-09-16T18:59:59.307 回答