我有以下网站yahoo finance。我想在该页面上设置一个日期范围,例如1997年4月3日到2015年11月4日。一旦我设置了日期范围,我就会得到一个链接,在该页面下方的页面上将文件下载为csv
。我想下载csv文件。但我希望所有这些都能以编程方式完成。我如何使用python实现这一目标。
答案 0 :(得分:7)
这可能会有所帮助:
import requests
import shutil
def callme():
url = "http://real-chart.finance.yahoo.com/table.csv?s=%5EBSESN&a=03&b=3&c=1997&d=10&e=4&f=2015&g=d&ignore=.csv"
r = requests.get(url, verify=False,stream=True)
if r.status_code!=200:
print "Failure!!"
exit()
else:
r.raw.decode_content = True
with open("file1.csv", 'wb') as f:
shutil.copyfileobj(r.raw, f)
print "Success"
if __name__ == '__main__':
callme()
如何获取此网址?
您可以通过右键单击>获取任何网站中的API调用列表。检查元素 - >网络。
现在,当您从浏览器发出任何请求时,它将列出所有API调用。
您可以根据需要拆分日期并将其传递给网址。您需要对Yahoo如何通过URL传递日期进行一些研究。
编辑1:此脚本将通过HTTP和HTTPS运行。
答案 1 :(得分:2)
您可以操纵网址以下载所需的CSV,例如从April 3, 1997
到Nov 4, 2015
您可以将网址设置为
https://in.finance.yahoo.com/q/hp?s=%5EBSESN&a=[month]&b=[date]&c=[year]&d=[month]&e=[date]&f=[year]&g=[daily/weekly/monthly/dividends_only]
月份可以是00
,01
,02
,03
,04
最多11
(注意:月份从00开始)
日期可以从01
开始到31
年份采用格式'yyyy'
每日 - > d
,每周 - > w
,每月 - > m
,仅限红利 - > v
现在您有了URL,然后下载您可以使用的CSV
链接:URL=URL&ignore=.csv
import urllib
url = '[URL]'
csv = urllib.urlopen(url).read() # returns type 'str'
with open('file.csv', 'w') as fx: # str, hence mode 'w'
fx.write(csv)
答案 2 :(得分:1)