데이터 스크랩(Data scraping)

자동실행파일 옵션 만들기

자동으로 스크립트를 실행하기 시작한다면, 이제 다른 명령어처럼 뭔가 옵션을 주고 싶을수 있습니다. 같은 페이지만 계속 반복실행하는건 의미가 없으니깐요.

앞서 사용한 웹페이지의 자료를 날짜가 들어간 파일로 만들어 보겠습니다. 스크립트 파일에서 변수는

변수명 = "텍스트"
변수명 = $(수식)

 으로 정의해 주고, 사용할때는

$변수명

으로 입력하면 됩니다.

이제 날짜를 출력해보죠.  date라고 입력하면 날짜가 출력됩니다..

date

Thu Jul 26 07:10:51 UTC 2018

파일명으로 사용하기엔 너무 복잡해서, 년월일만 나오게 출력포맷을 바꿔보겠습니다.

 date +"%y%m%d"

 180726

년월일만 간략하게 나왔습니다.(검색해보시면, 더 많은 옵션이 있으니깐 다양하게 변형해보세요)

이제 스크립트에 넣어보죠.

#!/bin/sh

NOW = $(date +"%y%m%d")

curl -s 'https://projecteuler.net/archives;page=1'\
| scrape -be 'table#problems_table > tr:not(:first-child)' | xml2json \
| jq -c '.html.body.tr[] | {id: .td[0]."$t",subject: .td[1][]."$t",solved:.td[2][]."$t"}' \
| json2csv -k id,subject,solved > test_list-$NOW.csv
 
for i in 2 3 4
do
curl -s 'https://projecteuler.net/archives;page=${i}'\
| scrape -be 'table#problems_table > tr:not(:first-child)' | xml2json \
| jq -c '.html.body.tr[] | {id: .td[0]."$t",subject: .td[1][]."$t",solved:.td[2][]."$t"}' \
| json2csv -p -k id,subject,solved >> test_list-$NOW.csv
done

더 검색해 보시면, 스크립트로 할수 있는일이 생각보다 많습니다. 이것저것 많이 시도해보세요.

댓글

댓글 본문
graphittie 자세히 보기