Python Web数据收集

时间:2012-11-13 03:10:55

标签: python database arrays web-applications web

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

我想做以下事情:

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

存储所有罢工,并将与市场价格以下的罢工相对应的要求存入名为“罢工”的数组中并询问

见图片澄清: enter image description here

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

罢工= [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,请告诉我。谢谢。

由于这不是一个任务,任何其他可以更容易做到这一点的编程语言也很受欢迎,但我需要存储在数组中的数据

5 个答案:

答案 0 :(得分:1)

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

他们有一个Web服务,以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解析。

或者,有一些库可以为您构建所有这些。我没有使用它们,但如果我能记住它们,我会发表一些评论。

答案 1 :(得分:0)

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

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

在开始本教程之前,先浏览一下xpath。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

您需要和想要的是Pandas

以下是一个示例代码段。

  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:]

答案 4 :(得分:0)

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