我希望有人可以帮助我解决我在数据收集方面遇到的问题。
美国集群测绘项目构建了一个 API,以提供对开发人员友好的公共访问,以访问美国集群测绘网站上精心策划且不断更新的数据存档。该 API 可使用 HTTP 请求公开访问并返回 JSON 数据。 API 的基本 URL 为:http://clustermap.us/data
然后您可以通过添加 /TypeOfRegion/RegionID 来缩小数据的特殊性。以下是特定县的 JSON 数据示例。例如:https://clusterapping.us/data/region/county/48321
我想将他们的数据导入到 R 中。
注意:但是该服务器(USCMP 网站)无法证明它是 clustermapping.us;它的安全证书已于 87 天前过期。
这似乎阻止我在 R 中导入数据。
我首先尝试:
lnk <- readLines('https://clustermapping.us/data/region/county/48321')
jsonlite::fromJSON(sprintf('[%s]', gsub('}{', '},{', lnk, fixed = TRUE)))
总是返回以下错误:
Error in file(con, "r") :
cannot open the connection to 'https://clustermapping.us/data/region/county/48321'
In addition: Warning message:
In file(con, "r") :
URL 'https://clustermapping.us/data/region/county/48321': status was 'SSL connect error'
然后我尝试了:
base_url <- "http://clustermapping.us/data/region/county/48321"
response <- GET(base_url, config = list(ssl_verifypeer = FALSE, ssl_verifyhost= FALSE ))
总是返回以下错误:
Error in curl::curl_fetch_memory(url, handle = handle) :
schannel: next InitializeSecurityContext failed: SEC_E_CERT_EXPIRED (0x80090328) - The received certificate has expired.
我添加了“ssl_verifypeer = FALSE,ssl_verifyhost= FALSE”,因为由于与网站关联的 SSL 证书已过期,我不断收到此错误消息,这导致 HTTPS 请求失败。根据我的了解,添加此内容应该允许我使用 HTTP 而不是 HTTPS 发出请求。然而,这并没有什么区别。
我不确定如何继续。非常感谢您对我如何解决这个问题的意见。
附注在这方面我还是个初学者。
您想使用
config()
函数来传递这些值。您的通话应如下所示:
base_url <- "https://clustermapping.us/data/region/county/48321"
response <- GET(base_url, config(ssl_verifyhost=0, ssl_verifypeer=0))
注意我们如何传入
config()
函数的结果,而不是传递带有值列表的 config=
参数。