ローカルのマシンで実行して画面に出るテキストファイルをHTMLファイルとして保存してブラウザでみてください。
<pre>
# -*- coding: cp932 -*-
def getKabuka(code):
import urllib2
import string
from re import search
##code='4753'
result=[]
url='http://quote.yahoo.co.jp/q?s='+code+'&d=t'
##print url
str='取引値<br>(.+)<b>(.+)</b></td><td nowrap>前日比.+>(.+?)\(.+\)<.+>時価総額<br>(.+)百万円<'
try: ##エラーの処理
f=urllib2.urlopen(url) ##urlをオープン
except IOError, (errno, strerror): ##オープンできないときは
result.append('error')
else: ##オープンできたら
txt=f.read() ##htmlファイルを読み込む
##print unicode(txt,'euc_jp') ##変換できないコードがあるらしくエラーになる
m=search(str.encode('euc_jp'),txt) ##パターンマッチングでサーチ Windowsの場合は検索文字をEUCに変換してから
out= m.group
result.append(code)
result.append(url)
for i in range(5):
result.append(out(i))
result.append(int(string.replace(out(2),',',''))) ##株価の値を数字を返す
if out(3)=='--- ' : ##株価の変動の無いときは---がくるので0を返すようにする
result.append(0)
else:
result.append(int(string.replace(out(3),',',''))) ##昨日との差分額を数字で返す
result.append(int(string.replace(out(4),',',''))) ##時価総額を数字で返す
return result
def getColor(kabuka,diff):
ratio=int(1.0*diff/kabuka*100) ##変動率を実数で求め、小数点以下を切り捨てる
#株価の変動に割り付ける色を定義する
colorlist=['#ff0000','#ff3333','#ff6666','#ff9999','#ffcccc','#ccffff','#99ffff','#66ffff','#33ffff','#00ffff','#00ffcc']
if ratio < -5: #5%以上下がっていたら
color=colorlist[0]
elif ratio > 5: #5%以上あがっていたら
color=colorlist[10]
else: #+-5%以内だったら
color=colorlist[5+ratio]
#print ratio,color
return color
def drawRect(name,color,x0,y0,x1,y1,file=''):
print '.'+name+' {'
print ' left:',x0,'px;'
print ' top:',y0,'px;'
print ' width:',x1,'px;'
print ' height:',y1,'px;'
print ' background-color:',color
print '}'
if file :
o = open(file,'a')
o.write('.'+name+' {\n')
o.write( ' left : '+str(x0)+' px;\n')
o.write( ' top: '+str(y0)+' px;\n')
o.write( ' width: '+str(x1)+' px;\n')
o.write( ' height: '+str(y1)+' px;\n')
o.write( ' background-color: '+color+'\n')
o.write( '}\n')
o.close()
return 'ok'
def delFile(file):
import os
#file='c:/temp/drawrect.txt'
if os.path.isfile(file):
os.remove(file)
else:
print 'no file'
return
def splitTile(x0,y0,x1,y1,d):
if len(d) ==1:
drawRect(d[0][1],d[0][2],int(x0),int(y0),int(x1),int(y1),file='c:/temp/drawrect.txt')
else:
#print d
top=[];bottom=[];ttotal=0;btotal=0;xs=0;ys=0;n=0
n=0.5 *(len(d)-2) + 1
n=int(n)
#print n
top=d[:n]
for i in top:
ttotal=ttotal+i[0]
#print ttotal
bottom=d[n:]
for j in bottom:
btotal=btotal+j[0]
#print btotal
ratio=1.0*ttotal/(ttotal+btotal)
#print ratio
if x1 > y1 :
xs=x1 * ratio;ys=y1
splitTile(x0,y0,xs,y1,top)
splitTile(x0+xs,y0,x1-xs,y1,bottom)
else:
xs=x1;ys=y1*ratio
splitTile(x0,y0,x1,ys,top)
splitTile(x0,y0+ys,x1,y1-ys,bottom)
return 'ok'
companylist=['6752','6753','6954','6976','7752','6701','6702','6857','6764','6703','6971','6991','6952','6503',
'6504','4902','6502','6773','6841','6762','6674']
companylist.sort()
value=[]
for company in companylist:
data=getKabuka(company)
campanydata=[]
campanydata.append(data[9])
campanydata.append(data[0])
color=getColor(data[7],data[8])
campanydata.append(color)
campanydata.append(data[1])
#print campanydata
value.append(campanydata)
#print value
'''
for i in companylist:
a=getKabuka(i)
##print a[7],a[8]
print defineColor(a[7],a[8])
'''
'''
value=[[50,'sony','#ff99ff','http://www.sony.co.jp/'],[27,'panasonic','#00ffff','http://panasonic.jp/'],
[36,'dell','#008000','http://www1.jp.dell.com/content/default.aspx?c=jp&l=jp&s=gen'],
[18,'toshiba','#0000ff','http://www.toshiba.co.jp/index_j3.htm'],[39,'NEC','#ffff00','http://www.nec.co.jp/'],
[5,'Fijitsu','#ff00ff','http://jp.fujitsu.com/'],[63,'IBM','#c0c0c0','http://www.ibm.com/jp/']]
'''
print '<html>'
print '<head>'
print '<title>position</title>'
print '<style type="text/css">'
print '<!--'
print 'body { margin: 0}'
print 'div {'
print ' position: absolute;'
print ' font-weight: bold'
print '}'
splitTile(0,0,900,450,value)
print '-->'
print '</style>'
print '</head>'
print '<body>'
for i in value:
print '<a href="'+i[3]+'">'+'<div class='+'"'+i[1]+'">',i[1],'</div></a>'
print '</body>'
print '</html>'
</pre>