[Python] 윈도우 작업 스케줄러를 활용한 웹 크롤러 만들기

2020. 4. 30. 11:53Python 데이터 분석/Python_Crawling

들어가며
실습환경은 PyCharm Community Edition 2020.1 에 최적화되어 있습니다.

 

Python을 이용하여 간단한 웹 크롤러를 만들고, 윈도우 작업스케줄러 기능을 활용하여 주기적으로 크롤링을 수행할 수 있도록 만들어보려고 합니다. 

 

먼저 크롤링을 수행할 코드를 작성합니다. 저는 요새 기계식 키보드 하나에 관심이 있어서, 주기적으로 크롤링을 수행하여 원하는 키보드에 대한 최저가 가격을 수집하려고 합니다. 

 

수집 대상 사이트는 네이버 쇼핑이고, 제품명을 파라미터(parameter)로 주어 제품명과 최저가 가격, 링크를 출력할 수 있도록 만들었습니다.

#-*- coding: utf-8 -*-

# moduel import
import requests
from bs4 import BeautifulSoup

# ProductName = input("원하는 제품명을 입력하세요: ")

def crawler():
    baseUrl = "https://search.shopping.naver.com/search/all.nhn"
    # params = {"query" : ProductName}
    params = {"query" : 'ar87'}

    resp = requests.get(baseUrl, params=params)
    # print(resp)
    print(resp.url)

    soup = BeautifulSoup(resp.content, 'html.parser')
    # print(soup)

    content = soup.find('div', class_='search_list basis')
    firstContent = content.find('li', class_='_model_list _itemSection')
    # print(firstContent)

    pdctNm = firstContent.find_all('div')[1].find('div').find('a').text
    print(pdctNm)

    pdctPrice = firstContent.find_all('div')[1].find('span', class_='price').find('em').find('span', class_='num _price_reload').text
    print(pdctPrice)

if __name__ == '__main__':
    crawler()
# 결과값
https://search.shopping.naver.com/search/all.nhn?query=ar87
앱코 AR87 CNC 풀 알루미늄 체리키보드
266,500

정상적으로 결과가 나오는 것을 확인할 수 있습니다. 

스케줄러를 사용하기 위해, 간단한 배치파일(*.bat) 파일을 만들어줍시다.

 

bat 파일의 서식은 아래와 같습니다.

문서 편집기 프로그램을 사용하여 서식에 맞게 작성합니다.

"python.exe가/위치하는/폴더 경로/python.exe"(space bar)"작성한/python/파일이/위치하는/경로/CRAW_SHOP.py"

pause

 

 

작성한 파일을 .bat 형식으로 저장합니다. 

저는 crawler.bat 라는 이름으로 저장하였습니다.

 

 

검색창에 '작업 스케줄러' 를 검색하여 작업 스케줄러를 실행합니다.

좌측의 작업 스케줄러 라이브러리 폴더를 클릭한 다음, 오른쪽의 작업 탭에서 작업만들기...를 클릭합니다.

 

 

일반 탭에서 이름을 정해주고, 가장 높은 수준의 권한으로 실행을 체크해줍니다.

 

 

트리거 탭으로 들어간 다음, 새로만들기 버튼을 클릭합니다.

 

 

사용자의 컴퓨터 환경에 맞게 트리거 옵션을 설정해줍시다. 

저는 로그온 할 때 실행하고, 컴퓨터가 꺼지기 전까지 한 시간마다 작업 반복 간격을 설정하였습니다.

설정이 끝나면 확인을 눌러줍니다.

 

 

다음은 동작탭에서 마찬가지로 새로만들기를 클릭합니다.

프로그램/스크립트(P) 에는 crawler.bat 파일의 경로를 입력합니다.

시작 위치(옵션)(T) 에는 작성한 코드가 존재하는 """폴더""" 까지의 경로를 입력합니다.

설정이 끝나면 확인을 눌러줍니다.

 

 

한번 더 확인을 눌러 작업 스케줄러의 첫 화면으로 나오면, Crawler 라는 이름을 가진 스케줄러가 생성되어있습니다.

오른쪽 마우스 클릭 -> 실행을 눌러 실행해 봅시다.

 

아래와 같은 화면이 나오면 성공입니다. 

아무 키를 누르면 cmd 창이 종료됩니다. 

 

여기까지 Python을 이용하여 간단한 웹 크롤러를 만들고, 배치파일을 만들어 작업 스케줄러에서 주기적으로 크롤링을 수행하는 방법에 대해 알아보았습니다.