브라우저리스, 인형극 및 Node.js를 사용한 궁극의 웹 스크래핑

원래 게시됨cri.dev

Browser automation built for enterprises, loved by developers.



browserless.io은 호스팅된 인형극 스크래핑을 위한 깔끔한 서비스이지만 로컬에서 실행하기 위한 the official Docker image도 있습니다.

🤯 알고나서 깜짝 놀랐어요!

Github christian-fei/browserless-example에서 전체 소스 코드를 찾으십시오!

도커에서 브라우저리스 실행



한 줄이면 puppeteer를 사용하여 활용하기 위해 구성된 동시성 등이 있는 완전한 puppeteer 백엔드를 갖기에 충분합니다.

다음과 같이 옵션browserWSEndpoint을 전달하여 브라우저 없는 백엔드에 연결할 수 있습니다.

async function createBrowser () {
  return puppeteer.connect({ browserWSEndpoint: 'ws://localhost:3000' })
}


백엔드를 시작하려면 도커 이미지browserless/chrome를 사용하여 다음 명령을 사용할 수 있습니다.

docker run \
  -e "MAX_CONCURRENT_SESSIONS=15" \
  -e "MAX_QUEUE_LENGTH=0" \
  -e "PREBOOT_CHROME=true" \
  -e "DEFAULT_BLOCK_ADS=true" \
  -e "DEFAULT_IGNORE_HTTPS_ERRORS=true" \
  -e "CONNECTION_TIMEOUT=600000" \
  -p 3000:3000 \
  --rm -it browserless/chrome


소스 코드



Github christian-fei/browserless-example에서 전체 소스 코드를 찾으십시오!

puppeteer와 함께 웹 크롤러를 찾을 수 있습니다!

git clone https://github.com/christian-fei/browserless-example.git
cd browserless-example
npm i

npm run start-browserless
node crawl-with-api.js https://christianfei.com


브라우저 없는 도커 백엔드를 사용하는 인형극



브라우저 WebSocket 끝점ws://localhost:3000에 연결하기만 하면 브라우저 없는 백엔드에 연결됩니다!

다음은 <a>에서 모든 링크christianfei.com를 가져오는 간단한 예입니다.

const puppeteer = require('puppeteer')

main(process.argv[2])
  .then(err => console.log('finished, exiting') && process.exit(0))
  .catch(err => console.error(err) && process.exit(1))

async function main (url = 'https://christianfei.com') {
  const browser = await createBrowser()
  const page = await browser.newPage()
  await page.goto(url)
  console.log('title', await page.title())
  const links = await page.evaluate(selector => [...document.querySelectorAll(selector)], 'a')
  console.log('links.length', links.length)
}
async function createBrowser () {
  return puppeteer.connect({ browserWSEndpoint: 'ws://localhost:3000' })
}


예제 비디오:

좋은 웹페이지 즐겨찾기