【问题标题】:Python Web data collectingPython 网络数据收集
【发布时间】:2012-11-01 13:07:30
【问题描述】:

我是 Python 新手,但我有一个挑战,我正在努力完成。这与课程无关,但我正在尝试学习如何使用 python 使用网站。

我想做以下事情:

访问这个网站:http://finance.yahoo.com/q/op?s=FB&m=2012-12

将所有与低于市场价格的行权相对应的行权和卖价存储到名为罢工和卖价的数组中

看图说明:

与图片对应的示例数组是:

罢工 = [10,11,12,13,14,15,16,17,18,19,20]

问 = [10.20,8.20,7.20,6.30,5.30,4.40,3.50,2.75,2.05,1.45]

它不会抓住 21 - 27 次罢工,因为这高于市场价格。请让我知道这是否可能与python有关。谢谢。

由于这不是一项任务,因此任何其他可以更容易做到这一点的编程语言也值得赞赏,但我需要将数据存储在数组中

【问题讨论】:

  • 雅虎财经有api吗?我太累了,无法检查自己..
  • 如果没有这样的API,你可以尝试解析HTML,得到你想要的。 Beautiful Soup 是个不错的选择。
  • @Gevorg 他们没有用于选项的 API

标签: python database arrays web-applications web


【解决方案1】:

编辑: 我刚刚意识到您指的是 Yahoo! 上的选项页面!金融而不是基本的股票服务。我确信他们有一个 API,但就像股票一样,它可能没有发布。我对此很感兴趣,所以我可能会继续寻找。

他们有一个以 CSV 格式返回股票数据的网络服务。这是股票查询的基本格式:

http://finance.yahoo.com/d/quotes.csv?s=GOOG&f=nl1

这采用的两个 GET 参数是符号列表(用“s=”指定)和生成的 CSV 文件的格式(用“f=”指定)。所以在上面的例子中,我使用了谷歌的股票代码,格式是得到最后的价格。您可以使用多种代码和多种格式来获取您需要的股票数据。

有关格式变量的完整列表,请查看此page

所以你真正需要做的就是形成正确的 URL 并使用 urllib2 库的 urllib2.open(url) 方法来获取 CSV 文件,然后它只是对 csv 库进行一些基本的 CSV 解析。

另外,也有一些库可以为您构建所有这些。我没有使用过它们中的任何一个,但如果我能记住它们,我会发布一些作为 cmets。

【讨论】:

  • 谢谢,但这是我找到的,但我正在寻找选项页面
【解决方案2】:

一种可能的解决方案是抓取结果并将其存储在列表中(我假设)。您可以使用名为 lxml 的 python 库来抓取页面。 http://lxml.de/

让我指出一个类似的教程,http://www.techchorus.net/web-scraping-lxml

在开始学习本教程之前,先浏览一次 xpath。

【讨论】:

    【解决方案3】:

    是的,雅虎确实有一个 API:http://finance.yahoo.com/d/quotes.csv,它可以传递一些参数;有关详细信息,请参阅https://github.com/bunburya/bunbot/blob/master/utils/stock.py

    【讨论】:

      【解决方案4】:

      你需要和想要的是Pandas

      这是一个示例 sn-p。

        1 from pandas.io.data import DataReader                                                                                        
        2 from datetime import datetime
        3  
        4 dr = DataReader("YHOO", "yahoo")
        5  
        6 print "Yahoo's stock price over time"
        7 print dr["Volume"]
        8  
        9 yh_by_date = DataReader("YHOO",  "yahoo", datetime(2009,1,1))
       10  
       11 print "We want to restrict it based on specific dates"
       12 print yh_by_date["Adj Close"][-100:]
      

      【讨论】:

        【解决方案5】:

        感谢大家的回复。我可以用漂亮的汤做到这一点

        ;)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-04-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-05-15
          • 1970-01-01
          • 1970-01-01
          • 2012-06-02
          相关资源
          最近更新 更多