programming/python
series - PyLotto 만들기_2 - 당첨번호 1회 ~ 최신회 까지 가져오기_크롤링
slothCat
2021. 1. 6. 17:47
728x90
※ 주의 : 불법적인 크롤링에 대한 책임은 전적으로 본인에게 있습니다.
series-PyLotto-만들기1-이번주-당첨-번호-가져오기
1) 설명
마지막 회차를 가져와야 하기 때문에 크롤링 함수를 구성
[ 이전의 코드와 동일 ]
해당 회차의 번호를 가져올 수 있도록 인자로 전달받아 사이트 주소를 완성
마지막 회차를 가져와 1회 차까지 순차적으로 크롤링하여 출력
2) 코드
import requests
from bs4 import BeautifulSoup
def getLastNo():
req = requests.get('https://www.dhlottery.co.kr/gameResult.do?method=byWin')
html = req.text
soup = BeautifulSoup(html, 'html.parser')
# 회차 크롤링
no = soup.select('div.win_result > h4 > strong')
# 최신 회차 번호를 가져온다
return no[0].text
def crawlingLotto(nums):
# 로또 이번주 당첨 번호 사이트 주소
req = requests.get('https://www.dhlottery.co.kr/gameResult.do?method=byWin&drwNo=' + str(nums))
html = req.text
soup = BeautifulSoup(html, 'html.parser')
# 회차 크롤링
no = soup.select('div.win_result > h4 > strong')
# 추첨일
date = soup.select('div.win_result > p')
# 당첨 번호
nums_win = soup.select('div.num.win > p > span')
# 보너스 번호
nums_bonus = soup.select('div.num.bonus > p > span')
# 당첨번호를 리스트로 정리
l = []
for t in nums_win:
l.append(t.text)
# 나머지 데이터를 추가
l += [nums_bonus[0].text, no[0].text, date[0].text]
# 정리된 리스트 반환
return l
if __name__ == "__main__":
lastno = int(getLastNo()[:-1])
for i in range(lastno,1,-1):
nums = crawlingLotto(i)
print(nums)
3) 실행 화면
회차가 많아 시간이 오래 걸림
종료를 원할 경우 Ctrl + C 또는 정지 버튼을 눌러준다
반응형