Python url不下载fi

2024-09-27 00:13:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在开发一个定量交易的应用程序,从雅虎金融来源的财务信息。代码如下。你知道吗

from datetime import datetime
from calendar import timegm
import time

def constructYFURL(ticker, start_date,end_date,freq):
    start_date = str(timegm(time.strptime(start_date, "%Y-%m-%d")))
    end_date = str(timegm(time.strptime(end_date, "%Y-%m-%d")))
    if freq == 'w':
        interval = '1wk'
    else:
        interval = '1mo'
    if freq == 'd':
        interval = '1d'
    yFURL = "https://query1.finance.yahoo.com/v7/finance/download/"+ticker+"?      period1="+start_date+"&period2="+end_date+"&interval="+interval+"&events=history&crumb=jfsRogYbS3."
    return yFURL


def download(filePath, urlOfFile):
    import urllib2

    webRequest = urllib2.Request(urlOfFile)

    try:
        page = urllib2.urlopen(webRequest)
        content = page.read()

        with open(filePath, 'wb') as output:
            output.write(bytearray(content))

    except urllib2.HTTPError, e:
        print e.fp.read()

在下面,我通过选择一个股票报价器和我想要股票报价的时间段来测试代码。你知道吗

from download import constructYFURL, download
from datetime import datetime
from time import time

ticker = "NFLX"

start_date = "2016-07-18"

end_date = "2017-08-18"

freq = "d"

yFURL = constructYFURL(ticker, start_date,end_date,freq)

print yFURL

localFilePath = "/Users/Gebruiker/pytest/nflx.csv"

download(localFilePath,yFURL)

这是结果url:

https://query1.finance.yahoo.com/v7/finance/download/NFLX?period1=1468800000&period2=1503014400&interval=1d&events=history&crumb=eVjSxKy2scr

误差如下:

{
 "finance": {
    "error": {
        "code": "Unauthorized",
        "description": "Invalid cookie"
    }
  }
}

Process finished with exit code 0

它确实下载文件时,点击链接使用我的浏览器,但是,仍然是给我的错误,我找不到我指定的存储库中的csv文件保存。有人能帮我吗?我假设通过使用urllib2python库中处理cookies的处理程序,我可以解决这个问题,但我不知道如何解决。你知道吗


Tags: fromimportdatetimedatetimedownloadurllib2start
1条回答
网友
1楼 · 发布于 2024-09-27 00:13:34

您可能需要登录才能访问该URL。你知道吗

在这种情况下,您需要在请求的标头中包含cookie,这些cookie是在您登录时为您生成的。它在您的浏览器中工作,因为您的浏览器为您处理它。你知道吗

一种方法是使用requests模块及其^{}对象,该对象自动管理cookies。创建一个Session,从中登录,然后您应该能够使用它访问您的URL。你知道吗

相关问题 更多 >

    热门问题