javascript로 브라우저 자동화

참조 링크

Ref: nodejs npm

   
Puppeteer 로고 깃허브 링크 : https://github.com/puppeteer/puppeteer
문서 페이지 : https://pptr.dev/
API 문서 : https://github.com/puppeteer/puppeteer/blob/v5.5.0/docs/api.md
webscraping  

1. 발단

  • Python + Selenium 조합으로 크롤링하는 프로젝트를 몇 개 만들어 봤는데..
  • Google Apps Script를 쓰다보니 Javascript로 할 수 없을지 찾아보게됨
  • puppeteer를 찾아냄
  • 공부해보기로 함

2. 전개

Puppeteer란 ?

  • Google Chrome DevTools 개발팀에서 만든 WebDriver 기능의 Node.js 라이브러리
  • 단어의미 : 인형사 - 인형(puppet)을 부리는 사람
  • Puppeteer 간단 정리하기 - 박성룡
    • 2017년 부터 나온듯하다.
  • 역할이 Selenium과 비슷한데 Selenium과의 차이에 대한 설명을 puppeteer github 사이트에서 찾을 수 있다.
    • Selenium은 여러 브라우저에서 single API로 자동화 검증을 수행할수 있다
    • Puppeteer는 Chrome only지만 Chrome에 대해서는 더 다양한 옵션과 높은 신뢰성으로 자동화 검증을 수행할 수 있다.
  • Python에서 Selenium으로 웹 스크레이핑 하듯이 Javascript로 Puppeteer를 써서 스크레이핑할 수 있다.
  • Puppeteer의 alternatives, stackshare.io

사전학습

예제 : Typescript로 puppeteer 사용해보기

예제에 사용된 도구

Commander.js

  • nodejs app을 command-line tool로 만드는 도구

Creating Command-line Application with Node/Commander.js

  • 본 내용은 linux 환경에서 진행한 것 같은데 windows 환경도 많이 다르지 않음
  • Project Setup
    • npm init 으로 package.json 만들고 시작
    • commander는 로컬로 설치
  • Globally registering our application
    • 이 설정을 하기 전에는 node /bin/index.js로 실행해야하는데
    • notes만 타이핑해서 실행하도록 할 수 있다.
    • 우선, 어플리케이션의 entry point의 시작 부분에 다음 주석을 설정해야한다.
      #!/usr/bin/env node
      
    • 위의 Comment는 shebang이라는 것으로 linux에서 shell script를 실행할 때 어떤 실행조건으로 실행할지 알려주는 역할을 한다.
    • package.json에 다음과 같이 추가한다. 콘솔 명령어와 실행파일을 연결해주는 속성이다
      "bin": {
        "notes": "./bin/index.js"
      }
      
    • 프로젝트 root에서 npm link를 실행한다.
      • global path에 symlink를 만드는데 windows에서는 c:\Users\<사용자>\AppData\Roaming\npm\notes.ps1, notes.cmd, notes 파일이 생성된다.
      • 즉 아무데서나 notes를 type하면 실행된다
    • 일단 여기까지가 실행파일 환경 셋업. 이 이후는 기능을 추가하면된다.
      • 기능 추가는 위의 링크 문서를 참조한다.

typescript 시작하기

The following wiki, pages and posts are tagged with

TitleTypeExcerpt
basic setup using mac's new gpu post Wed, Oct 20, 21, initial setup on mac machine
Resources for DS & ML & DL post Mon, Oct 25, 21, bugs and tuts lists books services & api frameworks
Data combining using pandas post Tue, Oct 26, 21, Coupling multiple dataframes together uisng dataFrame and series
Dataset Collection for dl ml sources post Tue, Oct 26, 21, datasets for Scikt-learn, public google and nlp projects with awesome-public-datasets, Open Images V6
Practical Machine Learning Tools and Techniques post Tue, Dec 28, 21, owerpoint slides for Chapters 1-12. This is a very comprehensive teaching resource, with many PPT slides covering each chapter of the book
meet-puppeteer.md post javascript로 브라우저 자동화
Machine learning, deep learning, AI page DL/ML concept google search model 𝗔𝗿𝘁𝗶𝗳𝗶𝗰𝗶𝗮𝗹 𝗜𝗻𝘁𝗲𝗹𝗹𝗶𝗴𝗲𝗻𝗰𝗲 𝗣𝗿𝗼𝗷𝗲𝗰𝘁 𝗟𝗶𝘀𝘁
webscraping page webscraping lessons, rapa, blackyak, 100 famous mountains, github actions and python install