Julia 从URL读取数据

Julia 从URL读取数据,julia,Julia,有没有一种相当简单的方法可以从某个url获取数据?我尝试了最明显的版本,但不起作用: readcsv("https://dl.dropboxusercontent.com/u/.../testdata.csv") 我没有找到任何有用的参考资料。有什么帮助吗?这个软件包似乎运行得很好。还有其他请求(请参阅全文),但请求是主动维护的 获得它 使用它 您可以使用导出的函数之一,这些函数对应于各种HTTP动词get、post等,这些动词返回响应类型 julia> res = get("http:

有没有一种相当简单的方法可以从某个url获取数据?我尝试了最明显的版本,但不起作用:

readcsv("https://dl.dropboxusercontent.com/u/.../testdata.csv")
我没有找到任何有用的参考资料。有什么帮助吗?

这个软件包似乎运行得很好。还有其他请求(请参阅全文),但请求是主动维护的

获得它 使用它 您可以使用导出的函数之一,这些函数对应于各种HTTP动词getpost等,这些动词返回响应类型

julia> res = get("http://julialang.org")
Response(200 OK, 21 Headers, 20913 Bytes in Body)

julia> typeof(res)
Response (constructor with 8 methods)
然后,例如,您可以使用@printf

julia> @printf("%s",res.data);
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-us" lang="en-us">
<head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8" />
...
julia>@printf(“%s”,res.data);
...

如果要从URL读取CSV,可以使用as,然后通过URL读取数据。见下面的例子

或者,作为评论,您可以使用当前(2017年12月)更积极维护的软件包,如下所示:

julia> using HTTP

julia> res = HTTP.get("https://www.ferc.gov/docs-filing/eqr/q2-2013/soft-tools/sample-csv/transaction.txt");

julia> mycsv = readcsv(res.body);

julia> for (colnum, myheader) in enumerate(mycsv[1,:])
           println(colnum, '\t', myheader)
       end
1   transaction_unique_identifier
2   seller_company_name
3   customer_company_name
4   customer_duns_number
5   tariff_reference
6   contract_service_agreement
7   trans_id
8   transaction_begin_date
9   transaction_end_date
10  time_zone
11  point_of_delivery_control_area
12  specific location
13  class_name
14  term_name
15  increment_name
16  increment_peaking_name
17  product_name
18  transaction_quantity
19  price
20  units
21  total_transmission_charge
22  transaction_charge
使用
Requests.jl
包:

julia> using Requests

julia> res = get("https://www.ferc.gov/docs-filing/eqr/q2-2013/soft-tools/sample-csv/transaction.txt");

julia> mycsv = readcsv(IOBuffer(res.data));

julia> for (colnum, myheader) in enumerate(mycsv[1,:])
         println(colnum, '\t', myheader)
       end
1   transaction_unique_identifier
2   seller_company_name
3   customer_company_name
4   customer_duns_number
5   tariff_reference
6   contract_service_agreement
7   trans_id
8   transaction_begin_date
9   transaction_end_date
10  time_zone
11  point_of_delivery_control_area
12  specific location
13  class_name
14  term_name
15  increment_name
16  increment_peaking_name
17  product_name
18  transaction_quantity
19  price
20  units
21  total_transmission_charge
22  transaction_charge

如果它直接是一个csv文件,类似这样的内容应该可以工作:

A = readdlm(download(url),';')

如果您希望读入数据帧,这也适用于Julia:

using CSV   

dataset = CSV.read(download("https://mywebsite.edu/ml/machine-learning-databases/my.data"))
现在,你也可以使用纯Julia,处理下载细节,在内存中处理数据,也可以处理压缩文件

用法很简单

using UrlDownload

A = urldownload("https://data.ok.gov/sites/default/files/unspsc%20codes_3.csv")

好吧,这相当麻烦。这个问题不应该转换为功能请求吗?或者让基础设施保持如此复杂有什么好处?您和@rickhg12hs的两个回复也不能合并,它们彼此非常完美。2017年更新:这些天似乎维护得更积极。很高兴知道,如文档中所述:“请注意,此函数依赖于外部工具(如curl、wget或fetch)的可用性来下载文件,并且是为了方便而提供的。”这是最简单的答案,提供了数据帧输出,无缝-谢谢
using UrlDownload

A = urldownload("https://data.ok.gov/sites/default/files/unspsc%20codes_3.csv")