如何使用Stack Exchange API获取不同年份的所有页面?

时间:2019-07-15 13:46:16

标签: python web-scraping stackexchange-api

我想在Stack Overflow网站上获得所有带有特定标记的问题和评论。
通过使用the API,我设法打了一个简单的电话,但是我想知道如何滚动页面以获取甚至不同年份的所有数据。

我正在尝试使用标记为python的问题来完成此操作。
例如,此链接返回带有标签python的2019年7月1日至2019年7月5日的所有问题:

https://api.stackexchange.com/2.2/questions?fromdate=1561939200&todate=1562284800&order=desc&sort=activity&tagged=python&site=stackoverflow

但是,如果我想要2015年至2019年的所有数据,是否可以包含这样的代码?

?page=10

我可以放在哪里?

1 个答案:

答案 0 :(得分:1)

There are 845 thousand python questions, from 2015 to 2019(到目前为止)。
那是8,454个 页面 API请求-危险地接近您的max quota
此外,尝试一次获取那么多页面可能会触发throttlingbugs

因此,如果您下载了the Data Dump或对the Stack Exchange Data Explorer (SEDE)进行了分页查询,则会更好 。然后,只需使用API​​即可获取自上次转储或SEDE更新以来的更改。

这两个主题均超出此问题的范围。 (在其他帖子中也有介绍)。

要回答您的直接问题,您将像这样浏览结果:

  1. 获取: 2.2/questions?page=1&pagesize=100&fromdate=1420070400&order=desc&sort=creation&tagged=python&site=stackoverflow
  2. 然后: 2.2/questions?page=2&pagesize=100&fromdate=1420070400&order=desc&sort=creation&tagged=python&site=stackoverflow
  3. 您也可以循环播放,直到has_more(Doc)false