Computer

초간단한 curl과 맥 터미널 쉘스크립트를 이용한 웹페이지 내용 가져오기

로볼키 2016. 5. 3. 16:55

최근에 러블리즈 신곡을 듣기 위해 멜론에 가입을 하고 스트리밍도 하며 듣는데, 

1시간마다 뜨는 실시간 차트 순위 변동을 보니 재밌더군요. 

그래서 개인적으로 순위를 정리를 하고 있는데, 

깨어있는 시간이면 매 시 정각에 들어가서 차트를 확인하면 되는데, 자는 시간에는 확인을 못해서 아쉬웠습니다.



그러던 참에 어젯밤엔 '웹페이지를 자동으로 긁어오게 하면 되지 않을까?'라고 생각하면서 방법을 찾아봤습니다.

러블리즈가 저에게 공부하라고 합니다 여러분


능력자라면 어렵지 않게 '노래 제목' '현재 순위' '상승폭' 만 딱 긁어서 저장할 수 있을텐데, 저는 그런 능력자는 못돼서 

그냥 페이지 전체를 저장하고 직접 찾아보는 방법을 썼습니다. 





cURL은 see URL 에서 이름을 따 온, 데이터를 주고받을 수 있는 소프트웨어입니다. 

맥(OS X)의 터미널에는 기본적으로 설치가 되어 있어서 바로 쓸 수 있어요.


기본적인 사용법은 위키 https://en.wikipedia.org/wiki/CURL#Examples_of_cURL_use_from_command_line 에 충분히 나와있고, 


저는 여기에 약간의 쉘 스크립트를 덧붙여서 밤새 작동할 수 있도록 했습니다. 


우선 저장하고 싶은 디렉토리를 만들고 

meloncheck.sh 파일을 생성합니다.

touch meloncheck.sh 해도 생성은 되는데 어차피 vi로 편집할거라 vi meloncheck.sh로 vi를 열고...




 meloncheck.sh


#!/bin/sh 

while true 

do

curl http://www.melon.com/chart/index.htm >> $(date +"%y%m%d%H%M").txt 

sleep 1800 

done



군대에서 배운거 잘도 써먹는다

한 줄 한 줄 따지면 아래와 같습니다.


#!/bin/sh 

 - 시스템 쉘 사용 선언

while true 

 - 조건이 참일 때까지 (while 뒤에 조건이 붙는데 true이므로 별다른 종료 조건 없이 무한반복)

do 

 - 아래를 실행한다

curl http://www.melon.com/chart/index.htm >> $(date +"%y%m%d%H%M").txt 

 - curl로 멜론 차트 홈페이지를 가져와서 

 - 파일 이름은 현재 시각을 가져와서 yymmddHHMM.txt라는 텍스트파일에 출력한다

sleep 1800 

 - 30분(1800초) 동안 멈춘다

done

 - 반복문 실행



이렇게 하고 명령줄에서 ./meloncheck.sh


를 치면 실행이 안될겁니다 권한이 없다고 Permission Denied 뜰거고...


chmod 744 meloncheck.sh 정도로 실행권한을 주면 








이렇게 작동이 됩니다.


100%라서 현 시각 정보는 저장이 됐고, 

종료하기 전까지 30분 간격으로 계속 실행이 됩니다.

1시간 간격으로 해도 되는데 혹시나 몰라서 30분 간격으로 같은 시간대 페이지를 두 번 저장하도록 한거구요.

종료하려면 Ctrl+C를 눌려주세요.




이제 폴더에 들어가서 vi로 저장된 파일 (여기선 1605030713.txt, 오늘 아침 7시 13분에 저장된 파일)을 vi로 열어서,

/Destiny 라고 검색을 하면

이렇게 뜨고, 아래에 순위랑 상승폭도 잘 뜹니다.


rank랑 wrap_rank 쓰면 적절히 저 부분을 잘라낼 수도 있을텐데 힘드네요 당장은.

PHP나 뭐나 쓰면 간단하게 되는 것 같던데 저는 PHP를 몰라서...


밤새 컴퓨터를 켜놓고 있어야 하는 단점이 있지만 (뭐 노트북이라 소음은 별로 안 납니다만) 데이터를 저장할 수 있는데에 일단은 만족합니다. 

참 임시방편으로 뭐 하는건 잘한단말야... 큭



서버에서 돌리면 될텐데 현재 집에서 도는 서버 비스무리한게 제 기능을 못해서 + curl도 없어서 안되네요.

일단 끝.

728x90