0

我正在尝试使用 SodaPy 库对 SFPD 数据集进行 API 调用,该数据集可在线获取( https://data.sfgov.org/Public-Safety/SFPD-Incidents-from-1-January-2003/tmnf-yvry ) (https://github.com/xmunoz/sodapy)。我只想获取json数据。

我已尽我所能遵循 GitHub 上的示例,但它只是不起作用。这是代码:


from sodapy import Socrata

client = Socrata(api_endpoint, app_token)

dataset_id = 'tmnf-yvry'

data = client.get(dataset_id, limit=2)

尽管有这些尝试,我仍然收到以下错误:

ConnectionError: ('Connection aborted.', gaierror(8, 'nodename nor servname provided, or not known'))

关于如何解决这个问题的任何线索?

4

2 回答 2

1
from sodapy import Socrata

client = Socrata('data.sfgov.org', None)

dataset_id = 'tmnf-yvry'

data = client.get(dataset_id, limit=2)
print data
{"stdout":"[{u'category': u'ASSAULT', u'dayofweek': u'Wednesday', u'incidntnum': u'050436712', u'time': u'04:00', u'descript': u'BATTERY', u'pddistrict': u'MISSION', u'y': u'37.7608878061245', u'location': {u'latitude': u'37.7608878061245', u'needs_recoding': False, u'human_address': u'{\"address\":\"\",\"city\":\"\",\"state\":\"\",\"zip\":\"\"}', u'longitude': u'-122.435002864271'}, u'address': u'18TH ST / CASTRO ST', u'date': u'2005-04-20T00:00:00', u'x': u'-122.435002864271', u'resolution': u'NONE', u'pdid': u'5043671204134'}, {u'category': u'LARCENY/THEFT', u'dayofweek': u'Sunday', u'incidntnum': u'080049078', u'time': u'18:00', u'descript': u'GRAND THEFT FROM A BUILDING', u'pddistrict': u'PARK', u'y': u'37.7622550270122', u'location': {u'latitude': u'37.7622550270122', u'needs_recoding': False, u'human_address': u'{\"address\":\"\",\"city\":\"\",\"state\":\"\",\"zip\":\"\"}', u'longitude': u'-122.446837820235'}, u'address': u'1100 Block of CLAYTON ST', u'date': u'2008-01-13T00:00:00', u'x': u'-122.446837820235', u'resolution': u'NONE', u'pdid': u'8004907806304'}]
于 2016-02-27T16:14:30.380 回答
0

如果您使用凭据等,它需要看起来像这样:

from sodapy import Socrata

cl = Socrata('data.colorado.gov','YOUR API KEY', username = 'YOUR USERNAME/EMAIL', password = 'YOUR PASSWORD')

then something like:
zx = cl.get('4eit-nuxn', limit=10, content_type='JSON', offset=0)

然后处理 zx 中的内容。上面的数据是科罗拉多州的公司......按字段调用数据,您可以尝试这种低俗的方法:

for i in range(len(zx)):
    print string.capwords(zx[i]["entityname"]), string.capwords(zx[i]["principalcity"])

就我而言,在处理结束时,我需要将 var (zx, here) 显式设置为 None,然后关闭连接。

祝你好运!

于 2016-03-03T00:01:41.213 回答