http://conansjh20.pythonanywhere.com/lottopage/
(실제 홈페이지에 적용한 예 입니다.)
1. 로또 공홈에서 금주 당첨번호를 가져오기
- requests, BeautifulSoup, re 모듈 이용
2. 당첨번호 6개 리스트화 시킴 + 보너스 번호
- for 구문을 통해 리스트로 만들고, 추출한 각 숫자는 '문자'에서 '정수'로 전환
3. 1등~5등 확인
- input 을 이용하여 직접 내 번호를 입력
- if else 이용
포인트
- BeautifulSoup의 find_all은 .text 가 안된다.
- find도 .text를 (처음) 하나만 인식하기 때문에 for 구문을 이용하여 .append로 계속 추가하여 문자열 생성.
- 특정 문자열을 '포함하는' 문자열을 찾을때 re.compile을 이용
연습을 실전처럼
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
import requests
from bs4 import BeautifulSoup
import re
import numpy as np
l1 = requests.get("https://www.dhlottery.co.kr/common.do?method=main") #requests를 이용해서 인터넷 홈페이지를 불러온다.
l2 = l1.content #l2는 l1의 내용으로 정의한다.
l3 = BeautifulSoup(l2, "html.parser") #BeautifulSoup를 이용해서 html을 분석한다."html.parser"
cl = re.compile('drwtNo.*') #홈페이지에 특정 문자열을 포함하는 것을 정의하기 위하여 re 이용
wn = [] #for 구문 시작 전에 빈 리스트로 정의해야한다.
for l4 in l3.find_all("span",{"id": cl}): #반복문을 통하여 특정 태그의 특정 id를 포함하는 태그열을 반복한다.
wn.append(l4.get_text()) #리스트화
#print(wn)
#print("당첨번호 : " + l4.get_text()) #태그 안의 문자만 출력한다.
l5 = l3.find("span",{"id":"bnusNo"}).text #보너스 번호의 경우 별도로 떨어뜨린다.
bn = int(l5)
#print(bn) #보너스 번호 출력
# print("당첨번호는 %s 입니다." % (wn))
# print("보너스번호는 %s 입니다." % (bn))
wn = list(map(int, wn))
#print(l4)
#print(html) #모든 html의 태그를 보여준다.
#print(l2)
MyNum = [int(input("첫번째 번호 : ")), int(input("두번째 번호 : ")), int(input("세번째 번호 : ")), int(input("네번째 번호 : ")), int(input("다섯번째 번호 : ")), int(input("여섯번째 번호 : "))] #내 번호 입력
print ("당첨번호 : ",wn)
print ("보너스번호 : ",bn)
print ("내 번호 : ",MyNum)
k = 0
l = 0
for i in wn:
if i in MyNum: #몇개 맞았나 확인
k = k + 1
#print (k,"개 맞추셨습니다.")
if k == 5:
if bn in MyNum:
print ("2등")
else:
print ("3등")
elif k == 6:
print ("1등")
elif k == 4:
print ("4등")
elif k == 3:
print ("5등")
else:
print ("꽝")
|
cs |