본문으로 바로가기
반응형

BeautifulSoup을 이용하여 특정 페이지의 html 코드를 다운받을 수 있습니다.

하기 링크는 로또 당첨페이지를 보여주는 페이지 입니다.

여기서 로또 번호를 긁어와 보도록하지요~

https://www.dhlottery.co.kr/gameResult.do?method=byWin




from bs4 import BeautifulSoup
from urllib.request import urlopen
url = "https://www.dhlottery.co.kr/gameResult.do?method=byWin"
html = urlopen(url)
soup = BeautifulSoup(html, 'lxml')
hoi = soup.select_one("#article > div:nth-child(2) > div > div.win_result > h4 > strong")
print(hoi.string)
spans = soup.select(".num.win span")
lotto = []
for number in spans:
    lotto.append(number.string)  

lotto2 = [int(span.string) for span in spans]
lotto2

#보너스 번호
bonus = soup.select_one("div.num.bonus > p > span")
print("당첨번호:", lotto2, " 보너스 번호:", int(bonus.string))

sou.select_one 구문은 웹페이지에서 어떤 부분을 찾을지를 html tag의 depth로 표현합니다.

이는 chrome의 F12 메뉴를 이용하여 쉽게 찾을수 있습니다.

먼저 아래 표시한 녹색 박스의 버튼을 누릅니다.

그리고 나서 번호가 있는 곳에 마우스를 올려서 클릭하면 해당 위치를 html 소스에서 찾아줍니다.

당연히 당첨번호가 있는곳을 골라야겠죠?

클릭해보니, div class 명이 num_win 이네요.

여기서 마우스 우클릭후 아래와 같이 Copy select를 선택합니다.


그리고 나서 붙여넣기를 하면 전체경로를 보여줍니다.

#article > div:nth-child(2) > div > div.win_result > div > div.num.win


만약 num_win이라는 class명을 여러곳에서 사용했다면 위와같이 전체 경로를 표기해야 하나, 사실 위 사이트에서는 당첨번호 부분에서만 해당 class 이름을 사용합니다.

따라서 전체 depth보다는 .num.win으로만 표기해도 해당 정보를 찾아올 수 있습니다.

나머지는 소스 코드처럼 해당 위치의 tag를 받아와서 string 값을 얻어와 번호를 추출하면 됩니다.


이번엔 네이버에서 긁어와 봅니다.

from bs4 import BeautifulSoup
from urllib.request import urlopen
url = "https://search.naver.com/search.naver?sm=top_hty&fbm=1&ie=utf8&query=%EB%A1%9C%EB%98%90"
html = urlopen(url)
soup = BeautifulSoup(html, 'lxml')
title = soup.select_one("#_lotto > div.lotto_wrap > div.lotto_tit > h3 > a > em")
title.string
spans = soup.select(".num_box span")
balls = [span.string for span in spans]
print(balls[0:6], balls[7])



반응형