首页 > 解决方案 > 从雅虎财经网站下载的数据不一致

问题描述

我用 python 编写了一个脚本来从 Yahoo Finance 下载 csv 文件(每只股票一个),其中包含我感兴趣的各种股票的历史股票数据。然后我使用这些数据进行相关性分析。

在今天多次运行代码的过程中,我意识到在执行相关性分析时我不断得到不同的数字。回溯时,我意识到每次运行脚本时,我为某些股票下载的 csv 文件都会包含不同时期的历史数据。

例如,在第一次尝试时,股票 A 的 csv 文件将包含从 01/01/2000 到 17/07/2020 的数据。几分钟后的第二次,股票 A 的 csv 文件现在将包含从 2010 年 1 月 1 日到 2020 年 7 月 17 日的数据。

即使我使用的参数每次都没有改变,情况也是如此。我无法弄清楚问题出在哪里,不胜感激任何帮助或指示。

我的代码如下:

stistocks = ["U96.SI", "D01.SI", "J36.SI", "O39.SI", "BN4.SI", "N2IU.SI", "BS6.SI", "G13.SI", "V03.SI", "S63.SI", "F34.SI", "S68.SI", "C52.SI", "Z74.SI",
"A17U.SI", "U11.SI", "H78.SI", "M44U.SI", "C31.SI", "U14.SI", "J37.SI", "T39.SI", "C6L.SI", "S58.SI", "D05.SI", "C38U.SI", "C09.SI", "C61U.SI", "C07.SI", "Y92.SI", "A35.SI"]

params = {"period1":946857600, "period2":1595030400, "interval": "1d", "events": "history"}

headers = {'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
             'Accept-Encoding': 'gzip, deflate',
             'Accept-Language': 'en-GB,en-US;q=0.9,en;q=0.8',
             'Dnt': '1',
             'Upgrade-Insecure-Requests': '1',
             'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4)'
                           'AppleWebKit/537.36 (KHTML, like Gecko)'
                           'Chrome/83.0.4103.97 Safari/537.36'}

s = requests.Session()
s.headers.update(headers)

retries = Retry(total=5, backoff_factor=1, status_forcelist=[ 502, 503, 504 ])
s.mount('https://', HTTPAdapter(max_retries=retries))
    
for stock in stistocks:
    url = "https://query1.finance.yahoo.com/v7/finance/download/{}".format(stock)
    data = s.get(url, params = params)
    with open("{}.csv".format(stock), "wb") as f:
        f.write(data.content)

标签: pythondownloadpython-requests

解决方案



推荐阅读