There are 1 articles in 'python'
  1. 2007/06/19 로또 번호 통계 구하기 #1 (1)

2007/06/19 14:09

로또 번호 통계 구하기 #1

허망하게 날려 먹었던 소스를 복구할 방법을 여러가지 강구했으나, 결국 몇줄 안되는 거 그냥 새로 짜기로 결심.
소스는 아래와 같다. 시간날 때 소스 코드 하이라이팅 플러그인 이라도 깔아야지 이거원...
python 으로 작성했다.



로또 번호 긁어오기 [get_num.py] (Language : python)
#!/bin/python
import sys
import re
import os

import urllib

# <td width='27' align='center'background='http://img.kbstar.com/lot/main_num_bg.gif' class='lot_number'>10</td>

# <td width='31' class='lot_number' align='center'>16</td>

# <span class='title01_est'>제 237회차</span>

class GetNumber:
    defaultLatestURL = "http://lot.kbstar.com/quics?page=A005345"
    defaultURL="http://lot.kbstar.com/quics?page=A005345&curRoundTime="
   
    def getDocument(self, url):
        f = urllib.urlopen(url)
        str = f.read()
        return str

    def grepNumber(self, str):
        "Get 6 numbers & bonus number return its list"
        # grep 6 numbers
        # print str
        num6 = re.findall(r'<td width=\'27\' align=\'center\'background=\'http://img.kbstar.com/lot/main_num_bg.gif\' class=\'lot_number\'>([0-9]+)</td>', str, re.I)
        # printnum6

        # grep bonus
        bonus = re.findall(r'<td width=\'31\' class=\'lot_number\' align=\'center\'>([0-9]+)</td>', str, re.I)
        # print bonus

        num6.append(bonus[0])
        return num6

    def repeatAll(self, start=1, end=5, baseURL=defaultURL):
        self.numList = []
       
        for no in range(start, end+1):
            getURL = baseURL + str(no)
            print "Getting %s... " % getURL
            rawStr = self.getDocument(getURL)
            self.numList.append(self.grepNumber(rawStr))

        return self.numList

    def printNumbers(self, list):
        for row in list:
           for item in row:
             print str(item),
           print

    def saveNumbers(self, list, filename="numbers.txt"):
        f = open(filename, 'w')
       
        for row in list:
           for item in row:
             f.write(str(item) + " ")
           f.write(os.linesep)

        f.close()

    def getLatest(self, url=defaultLatestURL):
        str = self.getDocument(url)

        GetNumber.latest = re.findall(r'<span class=\'title01_est\'>[^0-9]+([0-9]+)[^0-9]+</span>', str, re.I)

        return GetNumber.latest

if __name__ == '__main__':
    get_num = GetNumber()
    latest = get_num.getLatest()
    numList = get_num.repeatAll(1, int(latest[0]))
    # get_num.printNumbers(numList)
    get_num.saveNumbers(numList)




아직도 파이썬 개념이 잘 없어서, 코드가 개발새발이다. 나중에 재미로 wxWidget 라이브러리에 붙여서 간단한 클라이언트라도 만들어 봐야겠다.

실행하면 결과로 다음과 같은 텍스트 파일을 얻는다.
각 행의 처음 6개 숫자는 1등 번호이고, 마지막 뒤의 1개는 보너스 숫자이다.

2007/06/19 14:09 2007/06/19 14:09
[top]