【问题标题】:Downloading csv file from a website using python [duplicate]使用python从网站下载csv文件[重复]
【发布时间】:2016-02-04 14:01:18
【问题描述】:

我有以下网站yahoo finance。我想在该页面上设置一个日期范围,例如 1997 年 4 月 3 日到 2015 年 11 月 4 日。一旦我设置了日期范围,我就会在该页面上的表格下方获得一个链接以将文件下载为csv。我想下载 csv 文件。但我希望所有这些都以编程方式完成。如何使用 python 实现这一点。

【问题讨论】:

  • 你没有用谷歌找到任何东西?

标签: python csv


【解决方案1】:

这可能会有所帮助:

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 调用。

您可以根据需要拆分日期并在 URL 中传递。您需要对雅虎如何在 URL 中传递日期进行一些研究。

编辑 1:此脚本将通过 HTTP 和 HTTPS 运行。

【讨论】:

    【解决方案2】:

    您可以操纵 URL 以下载所需的 CSV,例如从 April 3, 1997Nov 4, 2015 您可以将 URL 设置为

    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]
    

    月份可以是0001020304 最多 11(注意:月份从 00 开始)

    日期可以从0131

    年份格式为'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)
    

    【讨论】:

    • 谢谢,您的回答对我有帮助,但是当我尝试打开需要登录访问的 url 时,出现“HTTP Error 403: Forbidden”,我该如何克服这个问题?
    【解决方案3】:

    你可以试试selenium。还有一些其他的轻量级工具,可以通过 google 找到。

    更新: 看来您正在寻找this

    【讨论】:

    • 难道没有办法使用简单的 python 脚本来做到这一点吗?我可以构建 URL。一旦我加载了 URL,我就会得到 html 页面。如何从该页面上的链接下载 csv 文件?
    • 查看更新,使用 urllib2 你可以做到这一点
    猜你喜欢
    • 2017-07-14
    • 1970-01-01
    • 2019-01-15
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 2021-10-30
    • 2019-05-09
    • 1970-01-01
    相关资源
    最近更新 更多