【问题标题】:On Reddit, how do scripts get the number of upvotes and downvotes for a comment?在 Reddit 上,脚本如何获取评论的赞成票和反对票数?
【发布时间】:2012-06-06 08:43:14
【问题描述】:

Reddit,人们可以发布获得赞成票和反对票的 cmets。此信息在页面本身上不容易访问,因此似乎使用了 API 之类的东西来收集此信息。

我找到了this script that does this,但我无法确定它从脚本中的哪个位置提取此信息。有人可以指出脚本从中获取数据的相关行吗?

【问题讨论】:

    标签: javascript api greasemonkey reddit


    【解决方案1】:

    该脚本使用 GM_xmlhttpRequest() 获取给定的 JSON 数据:cmets 或用户页面。

    GM_xmlhttpRequest()返回的数据,在行中访问:

    var jsonText = response.responseText,data;
    

    然后用脚本的processTree() 函数解析。真的没有一行;此功能需要大部分脚本。

    在 cmets 页面上,使用 API 似乎是分别获得赞成票和反对票的唯一方法。

    【讨论】:

      【解决方案2】:

      每条评论都有data属性:

      <div class="thing id-t1_c4upmtm odd comment " onclick="click_thing(this)" data-fullname="t1_c4upmtm" data-ups="646" data-downs="83">
      

      Reddit 的 HTML 结构真的很难理解,所以想办法从评论 ID 获取包含这些内容的元素。

      【讨论】:

      • 我直接从网页的源代码中提取了该 HTML 代码。它对应于一条评论。
      • 你能解释一下什么是“东西”吗?
      • 阅读the API documentation。尽管根据 Reddit 的分类,有时事物可能是“cmets”,但它们并不是用户认为的 cmets。 ... 事物通常是顶级链接。评论通常是对/关于事物的。请注意,已经有一段时间了,我个人不使用 Reddit,所以其中一些可能稍微过时或过时。但是,data-attribute 答案并不适用于大多数人认为的 Reddit 上的 cmets。
      • 实际上对我来说,使用 Firebug,看起来这些数据属性也出现在 cmets 以及提交中。我不知道为什么我之前错过了这个,但感谢您指出。另外,我也给了早期的解决方案一个赞成票,因为我认为这仍然是脚本所做的,如果它可以简单地通过 HTML 抓取数据,这很奇怪,但我想它只是这样做,因为它抓取了其他数据以及赞成票和反对票.
      • 你说得对,数据现在用于评论和用户页面。 (我可以发誓一周前它不存在,但看不到 reddit 的变更日志。)显然,这些数据是在过去几个月的某个时间添加的——在编写脚本之后。
      猜你喜欢
      • 2012-10-15
      • 2012-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-12
      • 2021-06-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多