puppeteer, cheerio 를 이용한 웹 크롤링

puppeteer, cheerio 를 이용해 네이버 쇼핑의 특정 카테고리 상품명 가격을 크롤링하여 콘솔에 표시하는 것을 테스트했다. nodejs 와 puppeteer, cheerio 는 미리 설치되어 있어야 한다. cheerio 는 jQuery 문법을 그대로 사용할 수 있어 상당히 편하다. 네이버 쇼핑의 상품정보를 크롤링하는 경우에는 puppeteer 모듈을 사용하지 않고도 가능하다. 하지만 최근의 vue.js 등을 사용한 웹페이지는 크롤링이 가능하지 않을 수 있기 […]

Read More

headless-chrome-crawler 사용해보기

수집, 크롤링에 관심이 생겨서 자료를 찾다 발견한 headless-chrome-crawler(이하 HCC)를 사용해보기 위해 가상머신을 세팅하고 테스트 환경을 구성했다. 머신은 Ubuntu 18.04 로 설정하는데 관리 편의를 위해 vagrant 를 사용한다. 1. 가상머신 접속 2. nodejs 설치 3. yarn 설치 4. headless-chrome-crawler 설치 5. 실행 테스트 node examples/priority-queue.js 실행 결과는 아래와 같다. Requested https://example.com/.Requested https://example.net/. 만약 libX11-xcb.so.1 관련 오류가 […]

Read More

웹서버 상태 체크 후 자동 재시작 쉘 스크립트

사용하는 가상서버의 문제일까? 간혹 nginx 웹서버가 다운되어 블로그 접속이 불가능한 경우가 생긴다. 근데 이런 일은 꼭 새벽에 발생한다. 오늘도 어김없이 새벽에 그런 일이 발생했지만 깊은 잠에 빠져있던 때라 아침에 일어나서야 확인하고 조치할 수 있었다. nginx 만 재시작하면 되는 간단한 일이다. 그래서 서버 상태 체크 후 자동으로 서버저를 재시작하는 스크립트를 만들어 봤다. 응답코드가 200 이 아니면 […]

Read More

[PHP] utf-8 문자열을 주어진 바이트로 자르기

php 에서 제공하는 substr 함수 등을 이용해 주어진 문자를 특정 바이트로 잘라야 하는 경우 영문이나 숫자는 문제가 되지 않지만 한글 등 utf-8 문자에서는 마지막 문자가 정상적으로 표시되지 않는 등의 문제가 발생한다. 이런 경우에 사용하고자 아래 함수를 만들었다. getSubstring 함수는 주어진 문자열을 주어진 길이(byte) 만큼 자른 후 리턴한다. 만약 주어진 길이만큼 자를 때 마지막 문자가 정상적인 […]

Read More