解释StackExchange API批处理请求



我的目的是检索输入问题的链接问题id列表。为此,StackExchange API提供了链接API,该API将分号分隔的问题id列表作为参数。

需要计算链接的问题总数约为100万。然而,StackExchange API只允许1万个请求的最大配额。因此,对于我来说,一次发送100个批处理请求(以分号分隔)是最理想的。因此,在一天之内,我可以访问100*10,000 = 100万个链接。

不幸的是,对于这样的批处理请求,StackExchange API返回一个平面JSON响应数组,并且没有办法告诉哪个链接对应于哪个输入问题。例如,id为14266328的问题链接到id为5598291和1917935的两个问题。而问题14266325链接到3270680。

现在,当我向StackExchange服务器发送以下请求时,

http://api.stackexchange.com/2.2/questions/14266328%3B14266325/linked?order=desc&sort=activity&site=stackoverflow&filter=!--KJA8bUDfrh   

我得到了以下回复。

{
  "items": [
    {
      "question_id": 3270680
    },
    {
      "question_id": 5598291
    },
    {
      "question_id": 1917935
    }
  ],
  "has_more": false,
  "quota_max": 10000,
  "quota_remaining": 9988
} 

问题是:从这个响应中没有办法知道哪些问题链接到14266328,哪些问题链接到另一个。

我尝试了一次只发送一个question_id参数的简单方法,但是我的请求在预期的10,000个请求后被阻止。

您的目标是创建Stack overflow的网络图,其中节点作为问题,边作为问题之间的超链接。API是一种更简单的方法,但它有速率限制,而批处理请求将不幸地要求您发出更多经过身份验证的请求,从而耗尽本已不多的速率限制。有创造性的方法可以绕过此限制,但您可能会冒违反堆栈溢出T& c的风险。

也就是说,我将使用Stack Exchange Data Dump自己生成这个网络图。您可以查看问题的文本内容并提取超链接。然后你可以查看Stack Overflow的超链接(因为/questions/linked端点只给你网站内的超链接)并生成你的图表。所有这些都可以在像Python这样的编程语言中轻松完成,使用re(提取超链接),networkx/igraph(生成图形并以GraphML格式导出以供将来使用)和lxml(迭代解析数据转储XML文件)。

编辑

结果表明,数据转储通过postlinks XML文件提供了这样的链接结构。这实际上意味着您不再需要通过抓取文章的文本内容来查找超链接。

相关内容

  • 没有找到相关文章

最新更新