http://conansjh20.pythonanywhere.com/lottopage/

 

로또 당첨번호 확인

로또 당첨 번호 확인

conansjh20.pythonanywhere.com

위의 홈페이지를 만들기 위한 모든 과정을 하나하나 포스팅 하도록 하겠습니다.

 

1. lotto.py 파일을 만들고 관련 모듈을 설치 및 import 합니다.

1
2
3
import requests
from bs4 import BeautifulSoup
import re
cs
  • requests - 인터넷 주소를 파이썬 내부로 불러올 수 있게 해주는 모듈
  • bs4 - 불러온 인터넷 주소의 html 파일 내부의 내용을 분석하고 필요한 부분을 딸 수 있게 하는 모듈. 위에서는 bs4 안의 여러 모듈 중에서 BeautifulSoup만 가져옵니다. 마지막에 as Soup 를 추가적으로 써서 실제 코딩 본문에서는 Soup로 줄여 사용하는 것이 관례입니다.
  • re - regular expression, 일명 정규 표현식으로 모든(숫자 및 기호를 포함한) 문자열에서 필요한 부분만 추출하기 위하여 일종의 필터링 하는 모듈이라 할 수 있습니다.

2. 로또 당첨번호를 확인하는 함수를 정의하고 웹 크롤링을 진행합니다.

1
2
3
4
def lotto(numbers):
    get_address = requests.get("https://www.dhlottery.co.kr/common.do?method=main"
    get_content = get_address.content 
    get_html = BeautifulSoup(get_content, "html.parser"
cs

실전을 통하여 느낀것은 최대한 내가 만드는 코딩은 함수화로 만드는 습관을 들여야 하는 것입니다.

함수로 만든다는 것은 그만큼 유연하게 다른 코딩들과 함께 사용하기 쉽게되어 내가 만든 함수를 또 하나의 모듈로 사용한다는 의미에서 상당히 중요한 작업이라 할 수 있습니다..

  • def lotto(numbers): - lotto라는 이름의 함수를 만들고 numbers는 매개변수(parameter)가 됩니다. numbers는 사용자가 입력하게 될 구입한 로또의 6개의 숫자가 됩니다.
  • get_address = requests.get("동행복권 공식 홈페이지") - get_address라는 변수를 정의합니다. requests 모듈의 get을 이용하여 동행복권 공식 홈페이지를 'get' 합니다.
  • get_content = get_address.content - get_address로 얻은 동행복권 홈페이지 주소의 내용(content)를 get_content로 정의합니다.
  • get_html = BeautifulSoup 모듈을 이용하여 get_content를 "html.parser"로 분석합니다. 앞의 get_address, get_content, get_html은 어떠한 웹 크롤링에서도 통상적으로 이루어지는 과정으로 get_html은 현재 동행복권 홈페이지의 모든 html 내용의 문자열입니다.

3. 원하는 부분의 문자열을 가져옵니다.

1
2
    get_time = get_html.find("strong",{"id":"lottoDrwNo"}).text
    get_date = get_html.find("span",{"id":"drwNoDate"}).text
cs
  • get_time = get_html에서 strong 태그의 id값이 lottoDrwNo인 태그 부분 전체를 가져와서 문자열만 가져옵니다. 아래는 전체 html tag 내용입니다.. 바로 이번 회차수를 가져오는 것입니다.
1
<strong id="lottoDrwNo">902</strong>
cs

동행복권 홈페이지 내부의 회차수 902를 가져왔다. 

  • get_date = get_html에서 마찬가지로 당첨번호 발표 날짜를 가져옵니다.

이로써 이번 로또 회차 get_time 와 이번 로또 발표 날짜 get_date 를 얻었습니다!

 

사실 두 값 모두 특정 id값이 붙어 있기 때문에 아주 쉽게 원하는 문자를 가져왔습니다. 그리고 여러 블로그에서 많은 웹크롤링 연습을 해보라는 것은 다양한 홈페이지에서 내가 원하는 특정한 값만 가져오는 연습을 하면 할수록 실력이 늘기 때문이고 더불어 다른 홈페이지들의 html, css 구조도 많이 접할 수 있어 유익합니다. 개인적인 사견으로는 웹 크롤링은 일종의 추리와 같아서 수많은 태그 중에서 원하는 문자만 땄을 때의 기쁨은 형사가 추리로 범인을 잡는 느낌과 비슷합니다.ㅎ

 

특히 웹 크롤링에서 필수인 것이 다음에 나올 re 정규 표현식으로 매우 어렵고 까다롭지만 그만큼 매력이 느껴지는 모듈입니다. 저도 아직 초보 수준입니다.ㅎㅎ

 

지금까지 진행한 전체 코딩입니다.

1
2
3
4
5
6
7
8
9
10
import requests
from bs4 import BeautifulSoup
import re
 
def lotto(numbers):
    get_address = requests.get("https://www.dhlottery.co.kr/common.do?method=main"
    get_content = get_address.content 
    get_html = BeautifulSoup(get_content, "html.parser"
    get_time = get_html.find("strong",{"id":"lottoDrwNo"}).text
    get_date = get_html.find("span",{"id":"drwNoDate"}).text
cs

 

+ Recent posts