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을 다운로드 한다.
압축을 푼 후 적당한 위치로 옮긴 후, 해당 위치를 시스템 패스로 설정 해 준다.
- terminal 에
sudo nano /etc/paths
를 실행한다.
- 패스워드 입력
- 화면 하단에 추가하려는 위치를 추가한다.
- Ctrl + x
- Y
- 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 을 통해서 스크롤링 서비스를 개발 할 수 있다.
잘 돌아간다.