【问题标题】:download csv file using Python from the web使用 Python 从 Web 下载 csv 文件
【发布时间】:2012-11-12 05:36:50
【问题描述】:

目标:想要使用 Python 自动从 http://www.tocom.or.jp/historical/download.html 下载各种 .csv 文件(但这不是主要问题)

细节:特别是,我正在尝试下载“Tick Data”的 csv 文件(倒数第五个标题,可用 5 天。

问题:当我看到此网页的源代码时,查找“Tick Data”我看到了对这 5 个 .csv 文件的引用,但它们没有通常的 href 标签。当我使用 Python (urllib) 时,我需要知道这 5 个 .csv 文件的 URL,但不知道如何获取它们。

这不是 Python 本身的问题,而是关于如何找到一些可以从网页下载的 .csv 的 URL。因此,没有提供代码。

【问题讨论】:

    标签: python url csv download


    【解决方案1】:

    页面使用 JavaScript 创建 URL:

    <select name="tick">
      <option value="TOCOMprice_20121122.csv">Nov 22, 2012</option>
      <option value="TOCOMprice_20121121.csv">Nov 21, 2012</option>
      <option value="TOCOMprice_20121120.csv">Nov 20, 2012</option>
      <option value="TOCOMprice_20121119.csv">Nov 19, 2012</option>
      <option value="TOCOMprice_20121116.csv">Nov 16, 2012</option>
    </select>
      <input type="button" onClick="location.href='/data/tick/' + document.form.tick.value;" 
            value="Download" style="width:7em;" />
    

    它结合了一个路径,浏览器将对当前站点使用该路径。所以每个网址都是:

    http://www.tocom.or.jp + /data/tick/ + TOCOMprice_*yearmonthday*.csv
    

    从表面上看,数据只涵盖工作日。

    这些很容易拼凑成自动 URL:

    import requests
    from datetime import datetime, timedelta
    
    start = datetime.now() - timedelta(days=1)
    base = 'http://www.tocom.or.jp/data/tick/TOCOMprice_'
    
    next = start
    for i in range(5):
        r = requests.get(base + next.strftime('%Y%m%d') + '.csv')
        # Save r.content somewhere
        next += timedelta(days=1)
        while next.weekday() >= 5:  # Sat = 5, Sun = 6
            next += timedelta(days=1)
    

    我使用 requests 是因为它更易于使用的 API,但如果您愿意,也可以使用 urllib2 来完成此任务。

    【讨论】:

      【解决方案2】:

      您可以使用浏览器的开发者菜单等来确定下载链接。我用的是chrome,显示链接是

      http://www.tocom.or.jp/data/souba_d/souba_d_20121126_20121123_0425.csv

      这个 URL 结构似乎很容易猜到,页面上还有另一个链接:

      http://www.tocom.or.jp/historical/keishiki_souba_d.html

      指示如何构建拉动。一个不错的选择是每隔 5 分钟构建 csv 拉取结构。

      祝你好运!

      【讨论】:

        【解决方案3】:

        点击下载按钮时,使用带有开发工具的 Chrome、带有 Firebug 的 Firefox 或 Fiddler 查看请求 URL。

        (例如,我在 11 月 22 日看到这个:http://www.tocom.or.jp/data/tick/TOCOMprice_20121122.csv

        【讨论】:

          猜你喜欢
          • 2020-05-25
          • 1970-01-01
          • 2019-01-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-02-04
          相关资源
          最近更新 更多