有没有办法将整个SBIR奖项下载为JSON文件?

时间:2019-03-27 19:06:34

标签: python json xml api dataframe

对于我的工作,我需要创建一个Python程序,以自动从SBIR下载“奖励”的所有结果。

到目前为止,有171616个结果。

see here

我有两个可能的选择。我可以一次下载1,000,但是我需要确认自己不是reCAPTCHA的机器人,因此无法自动进行下载。

或者我可以使用他们的API,那太好了!但是在搜索所有可用内容时,它只会下载100个结果。我可以通过迭代遍历大块然后将其编译为一个大JSON文件吗?

这是documentation

这是where我说的是file>save as>filename.json

see here, only 100 results when importing into Python

任何帮助/建议都可以帮助我。

2 个答案:

答案 0 :(得分:1)

嗯,一种可行的方法是循环选择已知参数的可能组合。例如,API接受参数'year'和'company'等。您可以从授予该奖项的最早年份开始,例如1990年,然后一直循环到现在。

https://www.sbir.gov/api/awards.json?year=2010
https://www.sbir.gov/api/awards.json?year=2011
https://www.sbir.gov/api/awards.json?year=2012

这样,您每年将获得100个奖项。更好,但是您提到有171616个可能的结果,意味着每年有100多个结果,因此并不能全部获得。您可以组合使用另一个参数“ company”。

https://www.sbir.gov/api/awards.json?year=2010&company=luna
https://www.sbir.gov/api/awards.json?year=2011&company=luna
https://www.sbir.gov/api/awards.json?year=2010&company=other_company
https://www.sbir.gov/api/awards.json?year=2011&company=other_company

现在,每个公司每年可获得多达100个结果。这样可以为您带来更多结果。您可以从他们提供的另一个端点获取公司列表,这似乎对显示的结果没有限制-https://www.sbir.gov/api/firm.json,但请注意,出来的json绝对庞大,可能会冻结您的笔记本电脑。您可以使用json中的值作为'company'参数,并循环遍历这些值。

当然,所有这些都是解决方法,仍然不能保证您能获得所有结果(尽管可能可以全部获得)。我的第一步是尝试与网站管理员联系,告诉他们您的问题。返回大量结果列表的api的常见操作是在url中提供page参数-https://www.sbir.gov/api/awards.json?page=2,以便您可以循环浏览结果页面。也许您可以说服他们这样做。祝你好运!

答案 1 :(得分:1)

我希望他们有更好的文档。看来我们可以通过以下方式进行分页:

https://www.sbir.gov/api/awards.json?agency=DOE&start=100

https://www.sbir.gov/api/awards.json?agency=DOE&start=200

https://www.sbir.gov/api/awards.json?agency=DOE&start=300