首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用pandas提取ASX数据

使用pandas提取ASX数据
EN

Stack Overflow用户
提问于 2017-07-08 04:41:47
回答 3查看 2K关注 0票数 2

我正在尝试从雅虎财经提取股票市场数据以下是链接https://au.finance.yahoo.com/quote/ABP.AX/history?p=ABP.AX

我的代码如下

代码语言:javascript
复制
import pandas as pd
dfs = pd.read_html('https://au.finance.yahoo.com/quote/ABP.AX/history?p=ABP.AX')       
print(dfs)

上面的代码导致以下错误

代码语言:javascript
复制
Traceback (most recent call last):
  File "/home/furqan/Desktop/Data/Fundamental Analysis/get_data/ax_data.py", line 5, in <module>
    dfs = pd.read_html('https://au.finance.yahoo.com/quote/ABP.AX/history?p=ABP.AX')
  File "/usr/local/lib/python3.5/dist-packages/pandas/io/html.py", line 874, in read_html
    parse_dates, tupleize_cols, thousands, attrs, encoding)
  File "/usr/local/lib/python3.5/dist-packages/pandas/io/html.py", line 747, in _parse
    thousands=thousands))
  File "/usr/local/lib/python3.5/dist-packages/pandas/io/html.py", line 628, in _data_to_frame
    _expand_elements(body)
  File "/usr/local/lib/python3.5/dist-packages/pandas/io/html.py", line 611, in _expand_elements
    body[ind] += empty * (lens_max - length)
TypeError: ufunc 'add' did not contain a loop with signature matching types dtype('<U47') dtype('<U47') dtype('<U47')

我该如何解决这个问题?

EN

回答 3

Stack Overflow用户

发布于 2017-07-08 05:16:55

谢谢你用过了。

代码语言:javascript
复制
import fix_yahoo_finance as yf
data = yf.download("SPY", start="2017-01-01", end="2017-04-30")
票数 1
EN

Stack Overflow用户

发布于 2017-07-08 04:47:19

使用pandas_datareader包可能更容易做到这点:

代码语言:javascript
复制
pip3 install pandas_datareader

from pandas_datareader import yahoo
In [13]: yahoo.quotes.YahooQuotesReader('ABP.AX').read()
Out[13]: 
          PE change_pct  last  short_ratio    time
ABP.AX  5.65     -1.94%  3.04          0.0  4:10pm
票数 0
EN

Stack Overflow用户

发布于 2021-08-15 09:05:53

为什么不使用ASX API呢?例如https://www.asx.com.au/asx/1/share/ABP/prices?interval=daily&count=255

下面是一些代码,可以从中读取并写入Excel,您可以对其进行改进和调整。

代码语言:javascript
复制
import requests
import pandas as pd

base_url = 'https://www.asx.com.au/asx/1/share/'
code = 'abp'
suffix = '/prices?interval=daily&count=255'
url = base_url + code + suffix
r = requests.get(url, timeout=10)
price_data = r.json()
df = pd.DataFrame(price_data['data'])
df['close_date'] = pd.to_datetime(df.close_date.str[0:10], format='%Y-%m-%d', errors='coerce')
df.to_excel(code + '_price_hist.xlsx', sheet_name=code, index=False) 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44979299

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档