刮刮雅虎财务历史股票价格

时间:2017-11-08 23:42:47

标签: python-3.x

我试图使用BeautifulSoup with Python解析雅虎财务的各种股票的历史股票价格表。这是代码:

import requests
import pandas as pd
import urllib
from bs4 import BeautifulSoup

tickers = ['HSBA.L', 'RDSA.L', 'RIO.L', 'BP.L', 'GSK.L', 'DGE.L', 'AZN.L', 'VOD.L', 'GLEN.L', 'ULVR.L']
url = 'https://uk.finance.yahoo.com/quote/HSBA.L/history?period1=1478647619&period2=1510183619&interval=1d&filter=history&frequency=1d'

request = requests.get(url)

soup = BeautifulSoup(request.text, 'lxml')

table = soup.find_all('table')[0]




n_rows = 0
n_columns = 0
column_name = []

for row in table.find_all('tr'):

    data = row.find_all('td')
    if len(data) > 0:
        n_rows += 1
        if n_columns == 0:
            n_columns = len(data)


    headers = row.find_all('th')
    if len(headers) > 0 and len(column_name) == 0:
        for header_names in headers:
            column_name.append(header_names.get_text())


new_table = pd.DataFrame(columns = column_name, index = range(0,n_rows))


row_index = 0
for row in table.find_all('tr'):
    column_index = 0
    columns = row.find_all('td')

    for column in columns:
        new_table.iat[row_index, column_index] = column.get_text()
        column_index += 1

    if len(columns) > 0:
        row_index += 1    

第一次运行代码时,我将间隔设置为从2015年11月7日起的两年(每周价格)。问题是结果数据帧长101行但我知道它应该更多(106)。然后我试图在页面打开时(这是每天)将间隔完全更改为默认值,但我仍然有相同的101行,而实际数据要大得多。代码有什么问题,或雅虎财务正在做什么?

感谢任何帮助,我真的被困在这里。

1 个答案:

答案 0 :(得分:0)

AFAIK,该API于2017年5月关闭。您可以使用Google财经吗?如果您可以接受Ex cel作为解决方案,这里有一个文件的链接,您可以下载该文件以下载各种历史时间序列数据。

http://investexcel.net/multiple-stock-quote-downloader-for-excel/