8. cron을 이용한 정기적인 크롤링
파이썬을 이용한 머신러닝, 딥러닝 실전개발 입문
파이썬을 이용한 머신러닝, 딥러닝 실전개발 입문 책과 강의를 바탕으로한 코드 리뷰 및 정리입니다. 자세한 내용은 책과 강의를 참고해주세요.
link: github
2. 고급 스크레이핑
2-4. cron을 이용한 정기적인 크롤링
Cron
- macOS와 리눅스에서 사용.
- 데이터 수집과 같은 애프리케이션 / 로그, 백업과 같은 시스템 / 시스템이 제대로 동작하고 있는지 감시에 쓰이는 정기적인 처리를 수행.
Crontab 설정 방법
기본구조
crontab 분(0-59) 시(0-23) 일(1-31) 월(1-12) 요일(0-7) <실행할 명령어의 경로
- 요일 : 월(1), 화(2), … , 토(6), 일(7 or 0 )
숫자 이외에도 다음과 같은 것들을 지정할 수 있다
이름 사용 예 설명 리스트 0,10,30 0,10,30을 각각 지정한다 범위 1-5 1,2,3,4,5를 범위로 지정한다 간격 */10 10,20,30.. 등 10간격으로 지정 와일드카드 * 모두 지정 예시
macOS에서 매 분 마다 “HI”라고 이야기 하는 프로그램
* * * * * /usr/bin/say "HI"
매일 아침 8시 30분에 “Good morning”라고 이야기 하는 프로그램
30 8 * * * /usr/bin/say "Good morning"
매월 20일 18시 32분에 /home/hoge/fuga.sh라는 프로그램을 실행하는 프로그램
32 18 20 * * /home/hoge/fuga.sh
매월 마지막날에 뭔가를 하고싶은 프로그램
50 23 28-31 * * /usr/bin/test $( date -d '+1 day' +%d) -eq 1 && 실행할 명령어
- 표준출력 혹은 오류출력이 있으면 메일을 준다. 이 기능을 비활성화 하고 싶으면 crontab 앞의
MAILTO
를 비워두면 된다.
매일 환율 정보 저장하기
from bs4 import BeautifulSoup
import urllib.request as req
import datetime
#HTML가져오기
url="https://finance.naver.com/marketindex/"
res=req.urlopen(url)
#HTML분석하기
soup=BeautifulSoup(res, 'html.parser')
#원하는 데이터 추출
price=soup.select_one('div.head_info > span.value').string
print("usd/krw",price)
#저장할 파일 이름 구하기
t=datetime.date.today() #오늘 날짜
fname=t.strftime("%y-%m-%d")+".txt" #strftime : 날짜 -> 스트링
with open(fname, "w", encoding="utf-8") as f:
f.write(price)
이 코드를 매일 한번 씩 실행하고 싶다면 cron을 설정해야 한다.
터미널에 다음과 같이 실행한다.
crontab -e
실행하면 자동으로 vi editor가 실행되며 editor 안에 다음을 작성해 주면 된다. (경로는 본인 경로를 지정한다)
0 7 * * * python3 /Users/Documents/Github/Web-Crawling/everyday-dollar.py