我正在尝试对消费者投诉数据集进行API呼叫,在线获取(hhttps://data.consumerfinance.gov/dataset/consumer-complaints/s6ew-h6mp)Sodapy库(https://github.com/xmunoz/sodapy)。我只想获取CSV数据,该网页说它有906182行,
我尽可能地在github上遵循了一个示例,但这只是不起作用。这是代码:
from sodapy import Socrata
client = Socrata("data.consumerfinance.gov", "apptoken", username="myusername", password="mypassword")
results = client.get("s6ew-h6mp")
我想获取整个数据集,但是我不断收到以下错误:
ReadTimeout: HTTPSConnectionPool(host='data.consumerfinance.gov', port=443): Read timed out. (read timeout=10)
有关如何通过此操作的任何线索?
默认情况下,Socrata连接将在10秒后超时。
您可以通过更新"超时"实例变量这样的so:
来增加Socrata客户端的超时限制from sodapy import Socrata
client = Socrata("data.consumerfinance.gov", "apptoken", username="myusername", password="mypassword")
# change the timeout variable to an arbitrarily large number of seconds
client.timeout = 50
results = client.get("s6ew-h6mp")
,由于文件太大,连接可能会计时。您可以尝试使用 limit 选项下载数据子集,例如
results = client.get("s6ew-h6mp", limit=1000)
您还可以使用SOQL关键字查询数据子集。
否则,sodapy模块是基于请求模块构建的,因此查看文档可能很有用。
查看github上的源代码,Socrata
的构造函数具有时间的参数。以下代码示例将将超时时间从10秒增加到25秒:
from sodapy import Socrata
client = Socrata("data.consumerfinance.gov", "apptoken", timeout=25)
results = client.get("s6ew-h6mp")
我认为这实际上可以解决问题:确保您从API端点请求数据。4x4 ID略有不同(在此处查看数据集时,请单击导出然后使用SODA API)。尝试:
results = client.get("jhzv-w97w")