Есть ли способ загрузить все награды SBIR в виде файла JSON? - PullRequest
0 голосов
/ 27 марта 2019

Для моей работы мне нужно создать программу на Python для автоматической загрузки всех результатов для «наград» из SBIR .

На данный момент 171616 результатов.

see here

У меня есть два возможных варианта. Я могу загрузить 1000 одновременно, но мне нужно убедиться, что я не робот с reCAPTCHA , поэтому я не могу автоматизировать загрузку.

Или я мог бы использовать их API, что было бы здорово! Но он загружает только 100 результатов при поиске всего доступного. Есть ли способ, которым я мог бы перебрать куски и затем скомпилировать его в один большой файл JSON?

Это документация .

Это , где Я говорю file>save as>filename.json

see here, only 100 results when importing into Python

Любая помощь / совет действительно помогли бы мне.

1 Ответ

1 голос
/ 27 марта 2019

Хм, один из способов - циклически просматривать возможные комбинации параметров, которые вы знаете. Например, API принимает параметры «год» и «компания» среди других. Вы можете начать с самого раннего года, в котором была вручена награда, скажем, 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 в год, поэтому они не получат их всех. Вы можете использовать другой параметр «компания» в комбинации.

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' и прокручивать их.

Конечно, все это обходной путь, который все еще не гарантирует, что вы получите ВСЕ результаты (хотя может получить их все). Моим первым действием будет попытка связаться с администраторами сайта и рассказать им о вашей проблеме. Обычная вещь, которую нужно сделать для apis, которые возвращают массивный список результатов, - предоставить параметр page в URL-адресе - https://www.sbir.gov/api/awards.json?page=2, чтобы вы могли переключаться между страницами результатов. Может быть, вы можете убедить их сделать это. Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...