programming/python

series - PyLotto 만들기_3 - UI 만들기_당첨번호 확인

slothCat 2021. 1. 16. 09:38
728x90

코드 수정중...

import requests
from bs4 import BeautifulSoup
from PyQt5.QtWidgets import QWidget, QLabel, QApplication, QHBoxLayout, QVBoxLayout
from PyQt5.QtCore import Qt
import sys

class PyLotto(QWidget):
    def __init__(self):
        super().__init__()
        
        # UI초기화
        self.initUI()        
        # 크롤링
        l = self.crawlingLotto()
        # UI 업데이트
        self.update(l)

    def initUI(self):
        vbox = QVBoxLayout()
        hbox_1 = QHBoxLayout()
        hbox_2 = QHBoxLayout()

        # 회차 레이블
        self.noLabel = QLabel(self)
        self.noLabel.setText('999회') 
        self.noLabel.setAlignment(Qt.AlignLeft) 
        hbox_1.addWidget(self.noLabel)

        # 추첨일 레이블
        self.dateLabel = QLabel(self)
        self.dateLabel.setText('99년 99월 99일 추첨') 
        self.dateLabel.setAlignment(Qt.AlignRight) 
        hbox_1.addWidget(self.dateLabel)

        # 당첨 번호 레이블
        self.winLabel = []
        for i in range(6):
            wLabel = QLabel(self)
            wLabel.setText('99') 
            wLabel.setAlignment(Qt.AlignCenter)
            hbox_2.addWidget(wLabel)
            self.winLabel.append(wLabel)

        # 보너스 번호 레이블
        self.bonusLabel = QLabel(self)
        self.bonusLabel.setText(f'보너스 번호 99') 
        self.bonusLabel.setAlignment(Qt.AlignCenter)

        # 레이아웃 설정
        vbox.addLayout(hbox_1)
        vbox.addLayout(hbox_2)
        vbox.addWidget(self.bonusLabel)
        self.setLayout(vbox)

        self.setWindowTitle('PyLotto')
        self.show()

    def update(self, l):
        self.noLabel.setText(l[7])
        self.dateLabel.setText(l[8]) 

        for i in range(6):
            self.winLabel[i].setText(l[0 + i])
        
        self.bonusLabel.setText(f'보너스 번호 {l[6]}') 


    def crawlingLotto(self):
        # 로또 이번주 당첨 번호 사이트 주소 
        req = requests.get('https://www.dhlottery.co.kr/gameResult.do?method=byWin') 
        print(req.status_code)
        
        html = req.text 
        soup = BeautifulSoup(html, 'html.parser') 

        # 회차 크롤링 
        self.no = soup.select('div.win_result > h4 > strong') 
        # 추첨일
        self.date = soup.select('div.win_result > p') 
        # 당첨 번호
        self.nums_win = soup.select('div.num.win > p > span') 
        # 보너스 번호
        self.nums_bonus = soup.select('div.num.bonus > p > span')
        
        # 당첨번호를 리스트로 정리 
        l = [] 
        for t in self.nums_win: 
            l.append(t.text) 
            
        # 나머지 데이터를 추가 
        l += [self.nums_bonus[0].text, self.no[0].text, self.date[0].text] 
        # # 정리된 리스트 반환 
        return l 
        
if __name__ == "__main__": 
    app = QApplication(sys.argv)
    inst = PyLotto()
    app.exec_()

반응형