CloudFlare Workers로 매일 매일 부동산 가격 체크하기

임기홍·2022년 7월 25일
1
post-thumbnail

서버리스 프로그램을 aws lambda로 사용중이나, 사실 람다가 세팅이 복잡하다고 생각하여, 간단한 크롤링을 위해서 클라우드 플레어 워커스를 (이하 워커) 사용하게 되었다.

만들 것 : 내가 관심 있게 보고 있는 부동산 매물을 매일 매일 최저가가 얼마인지 메신저에 알림오도록 하는 것.

1. 클라우드 플레어 워커스

npm install -g wrangler
wrangler login                => 로그인

wrangler init <YOUR_WORKER>   => 위에서 '서비스 생성'과 동일
cd <YOUR_WORKER>              => 해당 폴더에서 index.js 수정
wrangler publish
  • CLI로 진행 시 사실 정말 빠르게 서버리스 앱이 배포가 가능하다.

2. 네이버 부동산에서 매물 긁기.

내가 관심 있게 보고 있는 매물은 개포동에 위치한 아파트 인데, 해당 아파트의 최저 매매가를 추적하려 한다. 네이버 부동산 고유 URL은 아래와 같다.
https://m.land.naver.com/complex/info/112228?ptpNo=1
여기서 해당 아파트의 code는 112228 임을 알 수 있다. 해당 code 값을 이용해서, 네이버 부동산에서 json 데이터를 가져오는 아래의 URL로 간단하게 json data만 가져 올 수 있다.

https://m.land.naver.com/complex/getComplexArticleList?hscpNo=112228&cortarNo=1168010300&tradTpCd=A1&order=prc&showR0=N&page=1

위 url에서 tradTpCd 파라미터가 전세, 매매, 월세 등을 의미하는데 A1은 매매 이다. 따라서 링크를 들어가보면 최저가로 정렬된 데이터들을 확인 할 수 있다. 어차피 나에게 필요한 데이터는 해당 리스트 중에 가장 첫번째 데이터의 링크 값과 가격 정도이다. nodejs를 사용하여 fetch로 데이터 추출.


import fetch from 'node-fetch';

async function main() {
    const url = 'https://m.land.naver.com/complex/getComplexArticleList?hscpNo=112228&cortarNo=1168010300&tradTpCd=A1&order=prc&showR0=N&page=1'
    let response = await fetch(url);
    let data = await response.json();
    let result = data.result.list[0]
    let code = result['atclNo']
    let price = result['prcInfo']
    console.log(code, price);

}

main()

그러면 이쁘진 않지만 매물번호와 가격을 가져올 수 있다.

3. 워커 index.js 수정하기 + 트리거 설정

워커의 여러가지 예시들은 아래의 링크를 참고하면 편하게 만들 수 있다. 여러 목적으로 활용 가능한 범용성 있는 서버리스 앱 인듯 하다.

https://developers.cloudflare.com/workers/examples/

위에서 적당한 예제를 가지고 와서, 로컬에서 테스트 후에 원하는 기능을 만든다. 위에서 만든 code와 price를 가지고 내가 사용중인 디스코드 웹훅에다가 메세지를 쏴준다.


    ...

	let string = `https://m.land.naver.com/article/info/${code} | 가격: ${price}`
	const dcUrl = '디스코드 웹훅 URL'
	await fetch(dcUrl ,
		{
			method : 'post',
			headers: {
				'Content-Type': 'application/json',
			},
			body: JSON.stringify({
				username: 'webhook',
				content : string
			})

	})

실행하면 아래와 같이 디스코드로 알림이 온다.

aws lambda는 cron 세팅하는 것도 굉장히 번거로운 데, 워커는 꽤나 간편하다.

  • 트리거 => cron trigger 사용

요일을 선택하고 매일매일 자정에 해당 스크립트가 실행되도록 설정했다.


세팅은 끝났다. 이제 매일 12시 마다 내가 관심 있는 부동산 매물의 최저가가 내 디스코드 log 채널에 찍힐 것이다. 매일 매일 가격 체크하는 것도 귀찮고 사실 실거래 가격도 가격이지만 매물의 가격을 체크하는 것도 필요하다 생각해서 간단하게 클라우드 플레어 워커를 이용하여 만들어 봤다. 사실 지금 aws 람다로도 간단한 자동화된 프로그램을 몇개 돌리고 있는데, 단순한 로직의 크롤링 정도면 워커를 사용해도 충분할 듯.

profile
오히려 좋아😁

0개의 댓글