본문 바로가기
Study/Crawling

Python BeautifulSoup 로 로또번호 크롤링 하기

by Zeromk2 2020. 6. 9.
728x90

머신러닝을 공부해보고 싶은데 뭐 부터 할까 하다가 로또번호들 가지고 이것저것 예측하면서 분석하면 재미있겠다 싶어서 로또번호를 크롤링 해봤다.

 

import yaml
import requests
import pymongo
from bs4 import BeautifulSoup as bs

필요한 url이나 계정 정보는 yaml파일로 관리할거고 

페이지 정보는 requests로 받아오고 로또 번호는 beaurifulsoup로 뽑아내서 mongodb에 저장할 계획이다.

 

    def setUp(self):
        with open('info.yaml') as info:
            conf = yaml.full_load(info)
        self.url = conf['lotto_site']
        self.mongourl = conf['mongodb_url']
        self.win_num = [0 for i in range(6)]
        self.start_round_num = 1
        self.end_round_num = 1
        self.bonus_num = [0]

yaml파일 열어서 정보 가져오고 필요한 변수들 정리하고 본격적으로 크롤링 시작

 

    def test_crawling_winning_num(self):
        mongodb_url = self.mongourl
        connection = pymongo.MongoClient(mongodb_url)
        db = connection['LOTTO']
        collection = db['winning_number']

        for i in range(self.end_round_num):
            self.urls = self.url + str(self.start_round_num)
            winning_num_page = requests.get(self.urls)
            soup = bs(winning_num_page.content, 'lxml')
            self.win_num = soup.find(attrs={'class': 'num win'}).find_all(attrs={'class': 'ball_645'})
            self.bonus_num = soup.find(attrs={'class': 'num bonus'}).find_all(attrs={'class': 'ball_645'})
            self.bonus_num = self.bonus_num[0].text
            for i in range(6):
                self.win_num[i] = self.win_num[i].text

            self.win_num = {'round': str(self.start_round_num) + ' 회', 'winnum': self.win_num, 'bonusnum': self.bonus_num}
            # collection.insert_one(self.win_num)
            print(str(self.start_round_num) + ' 회 크롤링 완료')
            self.start_round_num += 1
        connection.close()

start_round_num이랑 end_round_num으로 얼마나 크롤링할건지 정하고 돌리면 

몇 회 크롤링이 진행되는지 print 로 찍히면서 과정을 볼 수 있다. 

그리고 크롤링이 다 되고 나면~

요렇게 mongoDB에 쌓여있는 것을 확인할 수 있다.

이제 이걸로 한번 데이터를 가지고 놀아보자 :D

댓글