코딩딩딩
(MySQL/selenium) 로또 번호 데이터 수집 본문
1. 소개
이번 페이지에서 데이터를 수집할 대상은 현재까지 누적된 로또당첨번호 숫자들이다.
어떤 숫자가 많이 뽑혔고 어떤 숫자가 적게 뽑혔는지 궁금했다.
과거의 당첨번호 정보를 공개하고 있는 동행복권 공식 사이트를 이용하여 데이터를 수집하였다.
https://www.dhlottery.co.kr/gameResult.do?method=byWin
로또6/45 - 회차별 당첨번호
1054회 당첨결과 (2023년 02월 11일 추첨) 당첨번호 14 19 27 28 30 45 1054회 순위별 등위별 총 당첨금액, 당첨게임 수, 1게임당 당첨금액, 당첨기준, 비고 안내 순위 등위별 총 당첨금액 당첨게임 수 1게임
www.dhlottery.co.kr
2. 전체 코드
import time
import pymysql
from selenium import webdriver
from selenium.webdriver.common.by import By
from bs4 import BeautifulSoup
from selenium.webdriver.common.keys import Keys
conn = pymysql.connect(host='', user='', password='', db='',charset='') #pymysql연결->인자는 개인이 설정
sql = "INSERT INTO lottoInformation(count,number1,number2,number3,number4,number5,number6,bonus_number) VALUES(%s,%s,%s,%s,%s,%s,%s,%s)"
cursor = conn.cursor()
driver = webdriver.Chrome('./chromedriver')
driver.get('https://dhlottery.co.kr/gameResult.do?method=byWin')
click_page = 1 #클릭할 다음 페이지
currentNumber = 1055 #최신회차 + 1
for i in range(currentNumber):
html = driver.page_source
soup = BeautifulSoup(html, 'html.parser')
number_list = []
nums = soup.select('#article > div:nth-child(2) > div > div.win_result > div > div.num.win > p > span')
nums.append(soup.select_one('#article > div:nth-child(2) > div > div.win_result > div > div.num.bonus > p > span'))
for j in range(len(nums)):
number_list.append(nums[j].text)
print(currentNumber-click_page, "회 당첨번호:", number_list)
cursor.execute(sql, (currentNumber-click_page, number_list[0], number_list[1], number_list[2], number_list[3], number_list[4], number_list[5], number_list[6]))
conn.commit()
click_page += 1
number_list.clear() #리스트 삭제
driver.find_element(By.XPATH, '//*[@id="dwrNoList"]/option[' + str(click_page) + ']').click() #다음 회차로 페이지 이동
driver.find_element(By.XPATH, '/html/body/div[3]/section/div/div[2]/div/div[1]/div/form/a').send_keys(Keys.ENTER)
time.sleep(1)
conn.close() #DB연결 종료
driver.close()
3. 결과 (1054회 기준)
많이 뽑힌 숫자
로또번호 | 횟수 |
34 | 162 |
18 | 155 |
12 | 154 |
27 | 154 |
14 | 152 |
17 | 151 |
39 | 149 |
13 | 149 |
43 | 148 |
적게 뽑힌 숫자
로또번호 | 횟수 |
9 | 113 |
32 | 120 |
22 | 122 |
23 | 125 |
30 | 128 |
28 | 128 |
41 | 131 |
6 | 133 |
29 | 134 |
아직은 데이터 수가 적은 편이어서 이러한 분석이 의미가 없을 수 있다고 생각할 수 있다.
그러나 시간이 흘러 점점 데이터수가 커진다면 이러한 분석도 의미가 있지 않을까?
'MySQL' 카테고리의 다른 글
(MySQL) 로또 당첨번호 누적 데이터 (updated-1062회) (0) | 2023.02.25 |
---|
Comments