Есть ли простой способ получить данные из некоторого URL-адреса? Я пробовал самую очевидную версию, не работает:
readcsv("https://dl.dropboxusercontent.com/u/.../testdata.csv")
Я не нашел полезной ссылки. Любая помощь?
Есть ли простой способ получить данные из некоторого URL-адреса? Я пробовал самую очевидную версию, не работает:
readcsv("https://dl.dropboxusercontent.com/u/.../testdata.csv")
Я не нашел полезной ссылки. Любая помощь?
Если вы хотите прочитать CSV из URL-адреса, вы можете использовать Requests package как @waTeim показывает, а затем прочитайте данные через IOBuffer. См. Пример ниже.
Или, как @Colin T Bowers, вы могли бы использовать текущий (декабрь 2017 г.) более активно поддерживаемый HTTP.jl следующим образом:
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
Пакет Requests, похоже, работает очень хорошо. Существуют и другие (см. Полный список ), но запросы активно поддерживаются.
julia> Pkg.add("Requests")
julia> using Requests
Вы можете использовать одну из экспортируемых функций, которые соответствуют различным глаголам HTTP get, post и т.д., которые возвращают тип Response/p >
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" />
...
Если это непосредственно файл csv, что-то вроде этого должно работать:
A = readdlm(download(url),';')