Có cách nào để tự động tải xuống giá cổ phiếu lịch sử từ tài chính yahoo hoặc tài chính google (định dạng csv) không? Tốt hơn là bằng Python.Tải xuống giá cổ phiếu lịch sử tự động từ tài khoản yahoo trong python
Trả lời
Câu trả lời ngắn gọn: Có. Sử dụng số urllib của Python để kéo các trang dữ liệu lịch sử cho các cổ phiếu bạn muốn. Đi với Yahoo! Tài chính; Google kém tin cậy hơn, có ít dữ liệu hơn và hạn chế hơn về cách bạn có thể sử dụng nó khi bạn có. Ngoài ra, tôi tin rằng Google đặc biệt cấm bạn lấy dữ liệu trong ToS của họ.
Câu trả lời dài hơn: Đây là tập lệnh tôi sử dụng để lấy tất cả dữ liệu lịch sử trên một công ty cụ thể. Nó kéo trang dữ liệu lịch sử cho một biểu tượng mã cụ thể, sau đó lưu nó vào một tệp csv có tên là biểu tượng đó. Bạn sẽ phải cung cấp danh sách các biểu tượng ticker của riêng bạn mà bạn muốn kéo.
import urllib
base_url = "http://ichart.finance.yahoo.com/table.csv?s="
def make_url(ticker_symbol):
return base_url + ticker_symbol
output_path = "C:/path/to/output/directory"
def make_filename(ticker_symbol, directory="S&P"):
return output_path + "/" + directory + "/" + ticker_symbol + ".csv"
def pull_historical_data(ticker_symbol, directory="S&P"):
try:
urllib.urlretrieve(make_url(ticker_symbol), make_filename(ticker_symbol, directory))
except urllib.ContentTooShortError as e:
outfile = open(make_filename(ticker_symbol, directory), "w")
outfile.write(e.content)
outfile.close()
Khi bạn định làm việc với chuỗi thời gian như vậy bằng Python, pandas
là không thể thiếu. Và đây là tin tốt: nó đi kèm với một trình tải dữ liệu lịch sử cho Yahoo: pandas.io.data.DataReader
.
from pandas.io.data import DataReader
from datetime import datetime
ibm = DataReader('IBM', 'yahoo', datetime(2000, 1, 1), datetime(2012, 1, 1))
print(ibm['Adj Close'])
Here's an example from the pandas
documentation.
Cập nhật cho gấu trúc> = 0,19:
Module pandas.io.data
đã bị xóa khỏi pandas>=0.19
trở đi. Thay vào đó, bạn nên sử dụng riêng biệt pandas-datareader
package. Cài đặt với:
pip install pandas-datareader
Và sau đó bạn có thể làm điều này bằng Python:
import pandas_datareader as pdr
from datetime import datetime
ibm = pdr.get_data_yahoo(symbols='IBM', start=datetime(2000, 1, 1), end=datetime(2012, 1, 1))
print(ibm['Adj Close'])
Khi tôi thử nó, nhập khẩu hoạt động tốt nhưng khi tôi gọi là 'goog' dòng tôi nhận được một lỗi: "IOError: sau 3 cố gắng, Yahoo đã không trả lại 200 cho url 'http://ichart.finance.yahoo .com/table.csv? s = GOOG & a = 0 & b = 1 & c = 2000 & d = 0 & e = 1 & f = 2012 & g = d & ignore = .csv '"Làm thế nào điều này có thể được sửa? – Cleb
Giống như Cleb. Đã không trả lại mã trạng thái 200 – bluerubez
@Cleb Có vẻ là do 'GOOG' không được API chấp nhận (không hiểu tại sao, sau khi di chuyển đến bảng chữ cái GOOG được giữ). Hoạt động tốt cho 'GOOGL' và các biểu tượng khác. Ví dụ được điều chỉnh chỉ trong trường hợp. –
Mở rộng @Def_Os's câu trả lời với một bản demo thực tế ...
Như @Def_Os đã nói - sử dụng Pandas Datareader làm nhiệm vụ này một cách vui vẻ thật
In [12]: from pandas_datareader import data
kéo tất cả các dữ liệu lịch sử có sẵn cho AAPL
bắt đầu từ 1980-01-01
#In [13]: aapl = data.DataReader('AAPL', 'yahoo', '1980-01-01')
# yahoo api is inconsistent for getting historical data, please use google instead.
In [13]: aapl = data.DataReader('AAPL', 'google', '1980-01-01')
5 hàng đầu tiên
In [14]: aapl.head()
Out[14]:
Open High Low Close Volume Adj Close
Date
1980-12-12 28.750000 28.875000 28.750 28.750 117258400 0.431358
1980-12-15 27.375001 27.375001 27.250 27.250 43971200 0.408852
1980-12-16 25.375000 25.375000 25.250 25.250 26432000 0.378845
1980-12-17 25.875000 25.999999 25.875 25.875 21610400 0.388222
1980-12-18 26.625000 26.750000 26.625 26.625 18362400 0.399475
5 hàng cuối cùng
In [15]: aapl.tail()
Out[15]:
Open High Low Close Volume Adj Close
Date
2016-06-07 99.250000 99.870003 98.959999 99.029999 22366400 99.029999
2016-06-08 99.019997 99.559998 98.680000 98.940002 20812700 98.940002
2016-06-09 98.500000 99.989998 98.459999 99.650002 26419600 99.650002
2016-06-10 98.529999 99.349998 98.480003 98.830002 31462100 98.830002
2016-06-13 98.690002 99.120003 97.099998 97.339996 37612900 97.339996
lưu tất cả dữ liệu dưới dạng tệp CSV
In [16]: aapl.to_csv('d:/temp/aapl_data.csv')
d:/temp/aapl_data.csv - 5 dòng đầu tiên
Date,Open,High,Low,Close,Volume,Adj Close
1980-12-12,28.75,28.875,28.75,28.75,117258400,0.431358
1980-12-15,27.375001,27.375001,27.25,27.25,43971200,0.408852
1980-12-16,25.375,25.375,25.25,25.25,26432000,0.378845
1980-12-17,25.875,25.999999,25.875,25.875,21610400,0.38822199999999996
1980-12-18,26.625,26.75,26.625,26.625,18362400,0.399475
...
Đã có một thư viện bằng Python gọi yahoo_finance vì vậy bạn sẽ cần phải tải về thư viện là người đầu tiên sử dụng dòng lệnh sau:
sudo pip install yahoo_finance
Sau đó, một khi bạn đã cài đặt thư viện yahoo_finance, đây là mã mẫu sẽ tải xuống dữ liệu bạn cần từ Yahoo Finance:
#!/usr/bin/python
import yahoo_finance
import pandas as pd
symbol = yahoo_finance.Share("GOOG")
google_data = symbol.get_historical("1999-01-01", "2016-06-30")
google_df = pd.DataFrame(google_data)
# Output data into CSV
google_df.to_csv("/home/username/google_stock_data.csv")
Điều này nên thực hiện. Cho tôi biết nếu nó hoạt động.
Chỉ cần tò mò - những lợi ích nào yahoo-tài chính cung cấp hơn pandas_datareader (hoặc ngược lại)? – Mathematician
Vào thời điểm đó là thư viện duy nhất tôi có thể tìm thấy liên quan đến việc kéo Giá Tài chính của Yahoo. Tuy nhiên, nó dường như không hoạt động nữa. – Naufal
Đã xác nhận - 21/02/2018 - 'yahoo_finance' không còn hoạt động. – 3kstc
- 1. Lấy đồ thị cổ phiếu từ tài chính yahoo
- 2. Nhận giá cổ phiếu từ Yahoo với Elisp?
- 3. Nhận lịch sử giá cổ phiếu
- 4. Gửi e-mail bằng tài khoản yahoo trong python
- 5. API có lập trình để tải xuống báo cáo tài chính lịch sử
- 6. Tôi có thể tìm alogrithms mẫu để phân tích giá cổ phiếu lịch sử ở đâu?
- 7. Gửi email đến tài khoản yahoo
- 8. cách lấy giá cổ phiếu từ chứng khoán Úc
- 9. Nhận báo giá chứng khoán từ tài chính yahoo ở định dạng json bằng cách sử dụng javascript
- 10. Tự động tính phí tài khoản PayPal?
- 11. Hợp nhất dữ liệu giá cổ phiếu trong quá khứ và sống với Rx
- 12. Tự động tải trong Python
- 13. Python có thư viện tương tự như quantmod trong R có thể tải xuống dữ liệu báo cáo tài chính không?
- 14. Cách liệt kê cổ phiếu AFP từ dòng lệnh (MacOS)?
- 15. Lập trình tự động tạo mã phiếu giảm giá được tạo tự động trong Magento?
- 16. Có thể tự động tải xuống ma trận giá hiện tại từ iTunes kết nối không?
- 17. Có cách nào để tự động nhận thông tin chung về nhiều cổ phiếu như tỷ lệ P/E, Năng suất, v.v ... không?
- 18. Làm cách nào để tự động tạo tài liệu để tải xuống trong Javascript?
- 19. Các lớp JDK cổ phiếu và Trình nạp lớp "không"?
- 20. đã làm tài khoản yahoo api chứng khoán trở về tùy chọn dữ liệu chứng khoán?
- 21. Nhãn "Tài khoản của tôi" hoặc "Tài khoản của bạn"
- 22. chuyển tài khoản github riêng tư sang tài khoản mới
- 23. Tự động kiểm tra ASP cổ điển
- 24. Có cách nào để tự động tải xuống các phiên bản tải xuống của Maven không?
- 25. Tải xuống đồng thời - Python
- 26. Tự động tải xuống tệp đính kèm bằng cách sử dụng PHPWord
- 27. Làm thế nào tôi có thể nhận được chuỗi tùy chọn cổ phiếu bằng YQL?
- 28. Tính toán và bảng cập nhật với SMA của giá cổ phiếu đóng cửa ở MYSQL
- 29. dòng lệnh trong python với lịch sử
- 30. Cách tải xuống tệp từ API Drive bằng cách sử dụng tập lệnh Python
xem http://scrape-google-finance.compunect.com/ đó là một trình thu gọn PHP nguồn mở khá mới dành cho tài chính của Google. Miễn phí sử dụng/sửa đổi và bạn có thể tải xuống tất cả giá cổ phiếu và tất cả các công ty từ Google. Không nên quá khó khăn để học hỏi từ nó và viết giống nhau trong python. – John