【问题标题】:Scraping selected columns from csv on Yahoo Finance using python使用 python 从 Yahoo Finance 上的 csv 中抓取选定的列
【发布时间】:2015-10-31 20:21:10
【问题描述】:

我正在尝试从 Yahoo Finance 数据中抓取选定的列。我能够以 csv 格式抓取整个数据,但我很想知道如何只抓取选定的列而不是整个 csv 数据。我尝试了 split 方法将字符串数据转换为列表,然后只访问列表中所需的列,但它不能正常工作。

import urllib2

listOfStocks = ["AAPL", "MSFT", "GOOG", "FB", "AMZN"]

urls = []

for company in listOfStocks:
    urls.append('http://real-chart.finance.yahoo.com/table.csv?s=' + company + '&d=6&e=28&f=2015&g=m&a=11&b=12&c=1980&ignore=.csv')

Output_File = open('../Files_Directory/Yahoo_Finance/Historical_Prices.csv','w')

New_Format_Data = ''

for counter in range(0, len(urls)):

    Original_Data = urllib2.urlopen(urls[counter]).read()

    if counter == 0:
        New_Format_Data = "Company," + urllib2.urlopen(urls[counter]).readline()

    rows = Original_Data.splitlines(1)

    for row in range(1, len(rows)):

        New_Format_Data = New_Format_Data + listOfStocks[counter] + ',' + rows[row]

Output_File.write(New_Format_Data)
Output_File.close()

【问题讨论】:

    标签: python csv web-scraping yahoo-finance


    【解决方案1】:

    使用现有的 Yahoo Finance python 模块之一可能会让您的生活更轻松,例如“yahoo_finance

    Ex 仅使用此模块写出卷数据(未测试)

    import yahoo_finance as yf
    import csv
    
    listOfStocks = ["AAPL", "MSFT", "GOOG", "FB", "AMZN"]
    
    with open('my_output') as csvfile:
        Output_file = csv.writer(csvfile)
    
        for stock in listOfStocks:
            s = yf.Share(stock)
            hist = s.get_historical('2015-01-01', '2015-10-30')
    
            for row in hist:
                Output_file.writerow([stock, row['Date'], row['Volume'])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-15
      • 2016-05-28
      • 1970-01-01
      • 2016-11-30
      • 2020-07-08
      • 2021-06-07
      • 1970-01-01
      相关资源
      最近更新 更多