python - 拉取美国人口普查 API 时的 400 状态码
问题描述
我想使用人口普查 API 来提取与 CB1100A11 表相同的就业数据(附截图)。该表的每一行代表一个不同的 2 位数 NAICS 扇区。尽管构建此表完全是另一项任务,但当我包含其他变量时,我似乎无法获取 API 数据。
我在人口普查局提供的每个示例网址上都取得了成功,但我自己的网址却没有取得任何成功。我在下面包含了一个代码片段,减去我的密钥,以显示它的样子。我在 Jupyter Notebooks 和 BeautifulSoup 的 BS4 中使用 Python 3。
example_vars = 'NAICS2007_TTL,GEO_TTL,EMP,LFO_TTL,ESTAB,PAYANN'
my_vars = 'NAICS2007,NAICS2007_TTL,GEO_TTL,EMP,LFO_TTL,ESTAB,PAYANN'
county_fips = '027'
state_fips = '42'
key ='str'
url= 'https://api.census.gov/data/2011/cbp?get='+my_vars+'&for=county:'+county_fips+'&in=state:'+state_fips+'&key='+key
res = requests.get(url)
res.status_code
当我添加其他变量时,例如NAICS2007
收到状态代码 400,但是当我使用示例变量时,我得到 200。共同点似乎是我的代码。任何人都可以帮忙吗?
解决方案
这应该移到评论中(我不能评论代表的 bc),但作为与美国人口普查 API 密切合作的人,我强烈建议使用人口普查库:
https://github.com/datamade/census
我的一个查询看起来像这样(其中 acs1dp 是我正在查询的数据库):
from census import Census
conn = Census("MY API KEY")
name = 'NAME'
agriculture = 'DP03_0033PE'
laborForce = 'DP03_0003PE'
travelTime = 'DP03_0025E'
highSchool = 'DP02_0066PE'
unemployed = 'DP03_0009PE'
poverty = 'DP03_0128PE'
payload = conn.acs1dp.get((name, travelTime, agriculture, poverty,
unemployed, laborForce, highSchool), {'for': 'state:*'})
它返回所有状态的每个列值。
推荐阅读
- python - While True Loop 中的 USB 事件捕获
- javascript - 变量更改时更改函数的声音效果
- python - 如何将形状为 64x4x4x3 的张量的形状更改为与网络输入相同的另一个形状?
- c# - 如何通过 CSOM 获取组所有者
- python - 在列表中分割列表?
- c# - C# - 如果数据库表列中的数据具有国家名称,则显示“数据表上的文本”
- android - Android生物识别命中FINGERPRINT_ERROR_LOCKOUT如何在不等待30秒的情况下重置
- html - CSS:之间不可移动的差距
和 . 我已经将标题的上边距设置为 0 - python - 展平 json 以获得 Pandas 中的多个列
- javascript - 为什么我的对象被声明但从未读取(在函数内)?