home changes contents help options
ローカルのマシンで実行して画面に出るテキストファイルを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>