Web Crawling with Selenium on Node.js

Node.js 와 Selenium을 이용한 Web Crawling

매우. 매우매우 간만의 포스팅이다.
Node.js를 이용한 간단한 크롤링 예제를 작성 해 본다.
Chrome browser를 타겟으로 MAC에서 개발 하도록 하겠다.

환경 설정

시작하기 전에 팁부터 알려주면 node v7.4.0 에서 다음과 같은 에러가 나는데, node v8.9.4버전으로 올리면서 해결 됨

1
2
3
4
5
6
7
8
9
10
11
12
13
14
CrawlingTest/node_modules/selenium-webdriver/lib/http.js:454
async execute(command) {
^^^^^^^
SyntaxError: Unexpected identifier
at Object.exports.runInThisContext (vm.js:78:16)
at Module._compile (module.js:543:28)
at Object.Module._extensions..js (module.js:580:10)
at Module.load (module.js:488:32)
at tryModuleLoad (module.js:447:12)
at Function.Module._load (module.js:439:3)
at Module.require (module.js:498:17)
at require (internal/module.js:20:19)
at Object.<anonymous> (/Users/kimjuseong/Documents/workspace_Node.js_Class/CrawlingTest/node_modules/selenium-webdriver/http/index.js:29:17)
at Module._compile (module.js:571:32)

Selenium-webdriver

selenium-webdriver을 사용하며, 다운로드는 npm을 이용하면 된다.

1
$ npm i --save selenium-webdriver

chrome driver

웹 드라이버를 사용하기 위해서는 브라우저 Driver를 사용해야 하는데, 작성일(180209) 기준으로 2.35가 최신버전이라 chromedriver_mac64.zip을 다운로드 한다.

압축을 푼 후 적당한 위치로 옮긴 후, 해당 위치를 시스템 패스로 설정 해 준다.

  1. terminal 에 sudo nano /etc/paths를 실행한다.
  2. 패스워드 입력
  3. 화면 하단에 추가하려는 위치를 추가한다.
  4. Ctrl + x
  5. Y
  6. Enter

간단한 사이트 개발

Selenium Usage만 돌려도 쉬이 된다.
가타부타 군더더기는 필요 없을 듯.

1
2
3
4
5
6
7
8
9
10
11
12
const {Builder, By, Key, until} = require('selenium-webdriver');
(async function example() {
let driver = await new Builder().forBrowser('chrome').build();
try {
await driver.get('http://www.google.com/ncr');
await driver.findElement(By.name('q')).sendKeys('webdriver', Key.RETURN);
await driver.wait(until.titleIs('webdriver - Google Search'), 1000);
} finally {
await driver.quit();
}
})();

오늘 포스팅의 의의는. MAC 에서 Node.js 로 Selenium & Chrome 을 통해서 스크롤링 서비스를 개발 할 수 있다.
잘 돌아간다.

Compartir