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

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

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

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

【问题讨论】:

    标签: python beautifulsoup urllib2 tumblr


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

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

      (参见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 对服务条款的评论。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-07-13
        • 2020-09-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-13
        • 1970-01-01
        相关资源
        最近更新 更多