そのため、以前よりもうまく機能していますが、まだいくつかの問題があります。私が今何をしているのかを見ることができるように、完全なスクリプトを投稿しています。問題を調査するために時間と労力を費やしますが、これはいずれにせよ Python と Beautifulsoup をよりよく学ぶのに役立ちます。
"""
This program imports a list of stock ticker symbols from "ca_stocks.txt"
It then goes to the Globe website and gets current company stock data
It then writes this data to a file to a CSV file in the form
index, ticker, date&time, dimension, measure
"""
import urllib2
import csv, os
import datetime
import re #regular expressions library
import bs4
#from bs4 import BeautifulStoneSoup as bss
#from time import gmtime, strftime
#from lxml import etree
import pyquery
#import dataextract as tde
os.chdir('D:\\02 - \\003 INVESTMENTS\\Yahoo Finance Data')
symbolfile = open('ca_stocks2.txt')
symbolslist = symbolfile.read().split('\n')
def pairs(l,n):
# l = list
# n = number
return zip(*[l[i::n] for i in range(n)])
def main():
i=0
while i<len(symbolslist):
print symbolslist[i]
url = urllib2.urlopen("http://www.theglobeandmail.com/globe-investor/markets/stocks/summary/?q=" +symbolslist[i])
root = bs4.BeautifulSoup(url)
[span.text for span in root("li.clearfix > span")]
[(span.text, span.findNextSibling('span').text) for span in root.select("li.clearfix > span.label")]
dims = [[]] *40
mess = [[]] *40
j=0
for span in root.select("li.clearfix > span.label"):
#print "%s\t%s" % ( span.text, span.findNextSibling('span').text)
dims[j] = span.text
mess[j] = span.findNextSibling('span').text
j+=1
nowtime = datetime.datetime.now().isoformat()
with open('globecdndata.csv','ab') as f:
fw = csv.writer(f, dialect='excel')
for s in range(0,37):
csvRow = s, symbolslist[i], nowtime, dims[s], mess[s]
print csvRow
fw.writerow(csvRow)
f.close()
i+=1
if __name__ == "__main__":
main()
私はこれが醜いコードであることを知っていますが、ちょっと、私は学んでいます. CSV への出力は次のようになります。
(4, 'TT', '2013-11-09T19:32:32.416000', u'Bidx0', u'36.88')
(5, 'TT', '2013-11-09T19:32:32.416000', u'Askx0', u'36.93')
(6, 'TT', '2013-11-09T19:32:32.416000', u'52週高05/22', u'37.94')
日付「05/22」は、価格が新しい高値または安値に達するたびに変更されます。これは、ディメンション (フィールド) の名前には理想的ではありません。
(7, 'TT', '2013-11-09T19:32:32.416000', u'52週安値06/27', u'29.52')
(35, 'TT', '2013-11-09T19:32:32.416000', u'Top 1000 Ranking:', u'Profit: 28Revenue: 34Assets: 36')
何らかの理由で、これらのディメンション (フィールド) とメジャー (データ) がまとめてまとめられています。うーん...
これはいくつかの問題のリストです。しかし、私が言ったように、私は今これを理解できるはずです. たくさん学びます、ありがとう。彼らが何をしているかを知っている人がいて、何らかの意見を提供してくれるのは素晴らしいことです。