goodthings4me.tistory.com
로또 당첨번호를 확인하는 웹 페이지(동행복권)에 대한 파이썬 크롤링을 하는 김에 이전 포스팅(동행복권 로또 당첨번호 추출하는 파이썬 크롤링 코딩)에 이어서 이번에는 지정된 범위의 회차별 로또 당첨번호를 csv 파일로 저장하는 코드를 작성해보았다.
동행복권 로또 당첨번호를 CSV 파일로 저장하기
csv 모듈을 추가한 후 당첨번호를 추출하는 함수 일부를 수정하고, csv 객체에 추출된 당첨번호를 writerow() 메서드를 활용하면 저장이 된다.
[크롤링 소스 코드]
import requests
from bs4 import BeautifulSoup
import csv
def lottery_resust(fr, to):
try:
int(fr)
int(to)
except ValueError as e:
print(f'오류 발생: {e}')
return False
if fr == 0 or fr > to:
print('_from은 0이 아니거나 to보다 작아야 함')
return False
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36',
}
lottery_list = []
for n in range(fr, to + 1):
url = 'https://www.dhlottery.co.kr/gameResult.do?method=byWin'
payload = {'drwNo': n, 'dwrNoList': n}
req = requests.post(url, headers=headers, data=payload)
lotto_list = []
if req.status_code == 200:
soup = BeautifulSoup(req.text, 'html.parser')
win_res = soup.find('div', attrs=('class','win_result'))
# no = win_res.select_one('h4 > strong').text
# _day = win_res.find('p', class_='desc').text
# print(f'\n로또 {no} 당첨결과\n{_day}')
lot_num = [lot.text for lot in win_res.select('div > div.num.win > p > span.ball_645')]
lot_num.insert(0, n)
lot_bonus = win_res.select_one('div > div.num.bonus > p > span').text
lot_num.append(lot_bonus)
lottery_list.append(lot_num)
else:
print('추출 오류입니다!!')
print(lottery_list)
xls_name = f'lotto_{fr}_{to}.csv'
with open(xls_name, 'w', newline='') as f:
csv_obj = csv.writer(f)
header = ['회차', 'N1', 'N2', 'N3', 'N4', 'N5', 'N6', 'Bonus']
csv_obj.writerow(header)
for num in lottery_list:
csv_obj.writerow(num)
if __name__ == '__main__':
_from = 1007
to = 1008
lottery_resust(_from, to)
- 추출할 회차의 범위를 지정하기 위해 _from, to 인자를 활용했고,
- 만일 _from이 0이거나 to 보다 크면 False 리턴 처리를 했고 또한 _from이나 to가 숫자가 아닌 경우에는 오류(ValueError)가 발생하도록 하여 숫자만 처리되게 하였다.
- 당첨번호를 csv로 저장하기 위한 리스트를 만들고 회차와 당첨번호, 보너스 번호를 그 리스트에 담았고,
- open() 함수로 csv 파일을 생성한 후 리스트를 writerow() 메서드로 저장하였다.
- open() 함수에서 newline=''이 없으면 한 줄 개행이 되기 때문에 추가하였고,

- 만일 한글이 깨지는 증상이 발생할 경우 encoding='utf-8-sig'를 추가하면 해결된다.
[실행 결과]
(venv) D:\pythonDev>d:/pythonDev/venv/Scripts/python.exe d:/pythonDev/lottery_excel.py
[[1007, '8', '11', '16', '19', '21', '25', '40'], [1008, '9', '11', '30', '31', '41', '44', '33']]
(venv) D:\pythonDev>

▶ 관련 포스팅 더보기 https://goodthings4me.tistory.com/701
동행복권 로또 당첨번호 추출하는 파이썬 크롤링 코딩
동행복권 로또 당첨번호 추출하는 파이썬 크롤링 코드를 만들어보았다. 네이버 지식인에 올라온 내용인 [vscode 파이썬 코딩 도와주세요. 로또 몇몇회 치고 버튼누르면 그 회 로또번호 나오게끔 (
goodthings4me.tistory.com
블로그 인기글
[엑셀] 근무연수 및 근무 개월수 계산하는 함수
직장을 다니다 보면 몇 년 몇 개월 또는 전체 며칠을 다니고 있는지 궁금할 때가 있다. 아니면, 총무나 인사 일을 할 때 직원들의 근속연수 또는 근속개월수 등을 계산하고 싶을 때도 있다. 이런 경우 엑셀 함수를 활용하면 어떨까!! 근무연수 및 근무 개월수 계산 함수 알아보기 엑셀에서 근무연수 또는 근무 개월수 계산하는 것은 datedif() 함수를 사용하면 간단하게 해결할 수 있다. 아래 이미지를 보면서 설명하면, 셀 E1에 기준일자를 입력하고, 근무연수를 구할 때는 =datedif(B3,$E$1,"Y")&"년" 을 입력한다. 근무개월수는 =datedif(B3,$E$1,"M")&"개월" 처럼 입력한다. 일수까지 파악할 때문 별로 없지만, 심심풀이로 구해보고 싶을 때 =datedif(B3,$E$1,"D")..
goodthings4me.tistory.com
엑셀 시트 분리 저장 - 엑셀 파일의 시트를 분리하여 저장하기
엑셀을 사용하다 보면 엑셀 시트를 분리해서 저장해야 할 때가 있다. 최근에도 이런 경우가 발생하여 구글링 후 엑셀 시트 분리 업무를 수행하고 내친김에 다른 사람들도 사용할 수 있도록 파이썬 tkinter로 프로그램으로 만들어 보았다. Excel Sheets 분리 저장하는 프로그램(with 파이썬 Tkinter) ※ 프로그램 다운로드(네이버 MYBOX에서 공유) : ExcelSeparateSheets.zip ▶ 프래그램을 실행하면 다음과 같이 초기 화면이 보인다. 찾아보기 : 엑셀 파일이 있는 폴더를 선택한다. (프로그램이 있는 최상위 디렉터리가 열린다) 실행하기 : 프로그램 실행 버튼 상태 변경 순서 : 실행전 → 실행 중 → Sheet "OOO" 분리 저장 중 → 실행 완료 실행 결과 확인 : 엑셀 파..
goodthings4me.tistory.com
폐업 신고 절차와 부가가치세 신고하는 방법
폐업 신고 시 세무서 안 가고 온라인으로 신고하는 방법인 '국세청 홈택스를 이용하여 폐업 신고하는 절차와 폐업 후 해야 하는 부가가치세 신고, 인건비 저리, 종합소득세 신고 등에 대해 포스팅합니다. 폐업 신고 시 홈택스 이용하는 방법과 부가가치세 등 신고 절차 여러가지 사유로 폐업을 해야 할 때, 예전에는 세무서를 방문해야 했지만 국세청 홈택스가 생긴 이후에는 사업자 등록이나 폐업 등을 인터넷으로 할 수가 있게 되었습니다. 특히, 코로나 시국인 요즘은 더더욱 온라인 신청 업무가 더 활성화되었죠. 폐업을 한다는 것 자체가 우울한 일인데, 발품을 파는 것보다는 커피 한잔 하면서 인터넷으로 간단하게 처리하는 게 좋을 듯하여 그 절차를 올려봅니다. 폐업은 폐업 신고와 함께 폐업 후 절차까지 모두 마쳐야 불이익이..
goodthings4me.tistory.com
'코딩 연습 > 코딩배우기' 카테고리의 다른 글
파이썬 GUI 모듈 tkinter 연습(쿠팡 파트너스 상품 링크 관리 프로그램 만들기) (0) | 2022.04.07 |
---|---|
파이썬 truncate() 함수로 텍스트 파일 내용 삭제하기 (0) | 2022.04.07 |
동행복권 로또 당첨번호 추출하는 파이썬 크롤링 코딩 (0) | 2022.03.29 |
크롤링 도구 셀레니움(selenium) 업그레이드 (1) | 2022.03.25 |
네이버 지식인 명예의전당 질문 키워드 추출(with 파이썬 크롤링) (0) | 2022.03.23 |
댓글