본문 바로가기

크롤링

로또 당첨 번호 크롤링 소스 코드

로또 당첨 번호 크롤링

# https://dhlottery.co.kr/common.do?method=main
# 1. 임포트
import requests
from bs4 import BeautifulSoup as soup

# 2. 대상 주소에서 가져오기
url = 'https://dhlottery.co.kr/common.do?method=main'
res = requests.get(url)
res.text

html = soup(res.content, 'html.parser')
html

# find 함수는 해당되는 값 하나만 찾습니다. 즉, 하나라도 찾으면 땡!
# find('태그이름', {'속성':'속성명'})
no1 = html.find('span', {'id':'drwtNo1'})
no2 = html.find('span', {'id':'drwtNo2'})
no3 = html.find('span', {'id':'drwtNo3'})
no4 = html.find('span', {'id':'drwtNo4'})
no5 = html.find('span', {'id':'drwtNo5'})
no6 = html.find('span', {'id':'drwtNo6'})
print(no1.text, no2.text, no3.text, no4.text, no5.text, no6.text)

# ===============================================================
# https://dhlottery.co.kr/gameResult.do?method=byWin&drwNo=931
url = 'https://dhlottery.co.kr/gameResult.do?method=byWin&drwNo=931'
res = requests.get(url)
lotto_html = soup(res.content, 'html.parser')
lotto_html

lottoNums = lotto_html.find('div', {'class':'win_result'})
finalNums = []

drwNo = lottoNums.find('strong')
finalNums.append(drwNo.text)
drwDate = lottoNums.find('p',{'class':'desc'})
finalNums.append(drwDate.text)
# lottoNums
divNums = lottoNums.find('div',{'class':'num win'})
firstNums = divNums.findAll('span')

for firstNum in firstNums:
    finalNums.append(firstNum.text)
finalNums

# ===============================================================
url = 'https://dhlottery.co.kr/gameResult.do?method=byWin&drwNo='
plus_url = input('회차를 입력하세요 :')
base_url = url + plus_url
res = requests.get(base_url)
lotto_html = soup(res.content, 'html.parser')

lottoNums = lotto_html.find('div', {'class':'win_result'})
finalNums = []

drwNo = lottoNums.find('strong')
finalNums.append(drwNo.text)
drwDate = lottoNums.find('p',{'class':'desc'})
finalNums.append(drwDate.text)

divNums = lottoNums.find('div',{'class':'num win'})
firstNums = divNums.findAll('span')

for firstNum in firstNums:
    finalNums.append(firstNum.text)
finalNums

# =================================================================
url = 'https://dhlottery.co.kr/gameResult.do?method=byWin&drwNo='
for i in range(1,11):
    plus_url = str(i)
    base_url = url + plus_url
    res = requests.get(base_url)
    lotto_html = soup(res.content, 'html.parser')

    lottoNums = lotto_html.find('div', {'class':'win_result'})
    finalNums = []

    drwNo = lottoNums.find('strong')
    finalNums.append(drwNo.text)
    drwDate = lottoNums.find('p',{'class':'desc'})
    finalNums.append(drwDate.text)

    divNums = lottoNums.find('div',{'class':'num win'})
    firstNums = divNums.findAll('span')

    for firstNum in firstNums:
        finalNums.append(firstNum.text)
    print(finalNums)
    
# =====================리팩토링=======================================
def getLottoNumbers(dNo):
    url = 'https://dhlottery.co.kr/gameResult.do?method=byWin&drwNo='

    plus_url = str(dNo)
    base_url = url + plus_url
    res = requests.get(base_url)
    lotto_html = soup(res.content, 'html.parser')

    lottoNums = lotto_html.find('div', {'class':'win_result'})
    finalNums = []

    drwNo = lottoNums.find('strong')
    finalNums.append(drwNo.text)
    drwDate = lottoNums.find('p',{'class':'desc'})
    finalNums.append(drwDate.text)

    divNums = lottoNums.find('div',{'class':'num win'})
    firstNums = divNums.findAll('span')

    for firstNum in firstNums:
        finalNums.append(firstNum.text)
    return finalNums

lottos = []
for i in range(1,11):
    lottos.append(getLottoNumbers(i))

import pandas as pd
df_lottos = pd.DataFrame(lottos)
df_lottos.to_csv('/content/drive/My Drive/Colab Notebooks/lotto.csv')