Print
카테고리: [ Development ]
조회수: 5774

KBO 프로야구 팀 순위를 보여주는 파이썬 프로그램을 만들자.

소스입니다.

import json
import unicodedata
import urllib.request
from bs4 import BeautifulSoup
 
def preformat_cjk (string, width, align='<', fill=' '):
        count = (width - sum(1 + (unicodedata.east_asian_width(c) in "WF") for c in string))
        return {
                '>': lambda s: fill * count + s,
                '<': lambda s: s + fill * count,
                '^': lambda s: fill * (count / 2)
                                + s
                                + fill * (count / 2 + count % 2)
}[align](string)
 
baseballData = urllib.request.urlopen('http://sports.news.naver.com/kbaseball/record/index.nhn?category=kbo&amp;year=2017')
source = baseballData.read()
baseballData.close()
 
soup = BeautifulSoup(source,'html.parser')
soup = soup.find_all('script')
 
for script in soup:
  line = str(script)
 
  if 'var ' in line and 'jsonTeamRecord' in line:
    recordList = line.split('jsonTeamRecord = ')
 
    for record in recordList:
      if record.startswith('{'):
        recordLine = record.splitlines()
        for finalLine in recordLine:
          if finalLine.endswith('}]};'):
            recordJsonData = finalLine
 
 
r = json.loads(recordJsonData[:-1])
regularTeamRecordList = r['regularTeamRecordList']
 
order=0
for team in regularTeamRecordList:
  t = json.loads(str(team).replace("'",'"'))
  order += 1
  tn = preformat_cjk(t['teamName'], 10)
  won = t['won']
  lost = t['lost']
  winDiff = t['winDiff']
  recentResult = t['recentResult']
  print('%02d  %s  %s  %s  %-5s   %s' % (order, tn, won, lost, winDiff, recentResult))

 

결과

01  KIA         67  37  0       5승-5패-0무
02  NC          62  44  6       4승-6패-0무
03  두산        60  43  6.5     8승-2패-0무
04  LG          54  49  12.5    4승-6패-0무
05  넥센        56  52  13      4승-6패-0무
06  SK          55  55  15      4승-6패-0무
07  롯데        53  53  15      6승-4패-0무
08  한화        43  61  24      5승-5패-0무
09  삼성        43  62  24.5    4승-6패-0무
10  kt          34  71  33.5    4승-6패-0무