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

2024-10-17 08:34:32 发布

您现在位置:Python中文网/ 问答频道 /正文

对于我的工作,我需要创建一个Python程序来自动从SBIR下载“awards”的所有结果。你知道吗

截至目前,共有171616个结果。你知道吗

see here

我有两个可能的选择。我可以一次下载1000个,但是我需要确认我不是一个有reCAPTCHA的机器人,因此我不能自动下载。你知道吗

或者太好了!但当搜索所有可用的内容时,它只下载100个结果。有没有办法遍历块,然后将其编译成一个大的JSON文件?你知道吗

这是documentation。你知道吗

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

see here, only 100 results when importing into Python

任何帮助/建议都能帮到我。你知道吗


Tags: 文件程序json内容savedocumentationas机器人
1条回答
网友
1楼 · 发布于 2024-10-17 08:34:32

嗯,一种方法是循环使用你知道的可能的参数组合。例如,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-https://www.sbir.gov/api/awards.json?page=2中提供一个page参数,这样您就可以在结果页面之间循环。也许你能说服他们那样做。祝你好运!你知道吗

相关问题 更多 >