CentOS7에서 Puppeteer 사용
우선 움직이고 싶다.
우선 README.md의 첫 번째 스크린 샷을 찍는 샘플을 https://qiita.com/
페이지 전체를 대상으로 작동시켜 보려고했습니다.
example.jsconst puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://qiita.com/');
await page.screenshot({path: 'example.png'});
await browser.close();
})();
node example.js
실행해보기
오류node_modules/puppeteer/.local-chromium/linux-588429/chrome-linux/chrome: error while loading shared libraries: libXcomposite.so.1: cannot open shared object file: No such file or directory
TROUBLESHOOTING: https://github.com/GoogleChrome/puppeteer/blob/master/docs/troubleshooting.md
Troubleshooting을 확인하면
CentOS Dependencies라는 항목이 있었으므로 Check out discussions을 확인해 보았습니다.
From a minimal CentOS 7 setup 다음과 같이 실행
yum -y install libX11 libXcomposite libXcursor libXdamage libXext libXi libXtst cups-libs libXScrnSaver libXrandr alsa-lib pango atk at-spi2-atk gtk3
다시 node example.js
실행
오류ERROR:zygote_host_impl_linux.cc(89)] Running as root without --no-sandbox is not supported. See https://crbug.com/638180.
TROUBLESHOOTING: https://github.com/GoogleChrome/puppeteer/blob/master/docs/troubleshooting.md
Troubleshooting을 확인하면
Chrome Headless fails due to sandbox issues이라는 항목이 있었기 때문에
- const browser = await puppeteer.launch();
+ const browser = await puppeteer.launch({args: ['--no-sandbox', '--disable-setuid-sandbox']});
수정하고 다시 node example.js
실행
우선 무사히 다음 스크린샷을 찍었습니다.
만약에 로딩이 없어지고 나서 스크린 샷하고 싶다
- await page.goto('https://qiita.com/');
+ await page.goto('https://qiita.com/', {waitUntil : 'networkidle0'});
waitUntil : 'networkidle0'
그렇다면 돌아 오지 않는 페이지가 있었기 때문에waitUntil: 'domcontentloaded'
후에page.waitFor(milliseconds)
에서 기다리는 방법이 무난할 것 같습니다.
그래도 돌아 오지 않으면 순서대로 시도하는 방법이 좋을 것 같습니다.
여기 에서 사용하는 것처럼 다음과 같은 옵션 목록을 만들 수도 있습니다.
optionList = [
{waitUntil: 'load'},
{waitUntil: 'domcontentloaded'},
{waitUntil: 'networkidle0'},
{waitUntil: 'networkidle2'}
];
글자를 깨고 싶다.
yum -y install ipa-gothic-fonts xorg-x11-fonts-100dpi xorg-x11-fonts-75dpi xorg-x11-utils xorg-x11-fonts-cyrillic xorg-x11-fonts-Type1 xorg-x11-fonts-misc
스크린샷의 폭을 넓히고 싶다
+ await page.setViewport({width: 1280, height: 720});
(widthのみの指定ではエラーになりました。)
모든 페이지로 만들고 싶습니다.
- await page.screenshot({path: 'example.png'});
+ await page.screenshot({path: 'example.png', fullPage: true});
수정하고 다시 node example.js
실행
영어로 되어 있으므로 언어 설정이나 사용자 에이전트를 설정하고 싶습니다.
언어 설정
How to specify browser language in Puppeteer
이에 따르면
브라우저 옵션에서 설정하는 방법
page 메서드에서 설정하는 방법
있는 모습.
이번에는 browser 옵션으로 설정해 보겠습니다.
+ '--lang=ja,en-US;q=0.9,en;q=0.8',
사용자 에이전트 설정
브라우저 옵션에서 설정하는 방법
브라우저의 메소드에서 설정하는 방법
page 메서드에서 설정하는 방법
페이지 emulate 옵션에서 설정하는 방법
있는 모습.
이번에는 browser 옵션으로 설정해 보겠습니다.
+ '--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36',
수정하고 다시 node example.js
실행
example.jsconst puppeteer = require('puppeteer');
(async () => {
try {
const browser = await puppeteer.launch({
args: [
'--no-sandbox',
'--disable-setuid-sandbox',
'--lang=ja,en-US;q=0.9,en;q=0.8',
'--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36',
]
});
const page = await browser.newPage();
await page.goto('https://qiita.com/', {waitUntil : 'domcontentloaded'});
await page.waitFor(2000);
await page.setViewport({width: 1280, height: 720});
await page.screenshot({path: 'example.png', fullPage: true});
await page.close();
await browser.close();
} catch (error) {
throw error;
}
})().catch((error) => {
console.log(error);
process.exit(1);
});
Reference
이 문제에 관하여(CentOS7에서 Puppeteer 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/horikeso/items/0bf9a78454b8124a6dfa
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://qiita.com/');
await page.screenshot({path: 'example.png'});
await browser.close();
})();
node_modules/puppeteer/.local-chromium/linux-588429/chrome-linux/chrome: error while loading shared libraries: libXcomposite.so.1: cannot open shared object file: No such file or directory
TROUBLESHOOTING: https://github.com/GoogleChrome/puppeteer/blob/master/docs/troubleshooting.md
yum -y install libX11 libXcomposite libXcursor libXdamage libXext libXi libXtst cups-libs libXScrnSaver libXrandr alsa-lib pango atk at-spi2-atk gtk3
ERROR:zygote_host_impl_linux.cc(89)] Running as root without --no-sandbox is not supported. See https://crbug.com/638180.
TROUBLESHOOTING: https://github.com/GoogleChrome/puppeteer/blob/master/docs/troubleshooting.md
- const browser = await puppeteer.launch();
+ const browser = await puppeteer.launch({args: ['--no-sandbox', '--disable-setuid-sandbox']});
- await page.goto('https://qiita.com/');
+ await page.goto('https://qiita.com/', {waitUntil : 'networkidle0'});
optionList = [
{waitUntil: 'load'},
{waitUntil: 'domcontentloaded'},
{waitUntil: 'networkidle0'},
{waitUntil: 'networkidle2'}
];
yum -y install ipa-gothic-fonts xorg-x11-fonts-100dpi xorg-x11-fonts-75dpi xorg-x11-utils xorg-x11-fonts-cyrillic xorg-x11-fonts-Type1 xorg-x11-fonts-misc
+ await page.setViewport({width: 1280, height: 720});
(widthのみの指定ではエラーになりました。)
- await page.screenshot({path: 'example.png'});
+ await page.screenshot({path: 'example.png', fullPage: true});
+ '--lang=ja,en-US;q=0.9,en;q=0.8',
+ '--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36',
const puppeteer = require('puppeteer');
(async () => {
try {
const browser = await puppeteer.launch({
args: [
'--no-sandbox',
'--disable-setuid-sandbox',
'--lang=ja,en-US;q=0.9,en;q=0.8',
'--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36',
]
});
const page = await browser.newPage();
await page.goto('https://qiita.com/', {waitUntil : 'domcontentloaded'});
await page.waitFor(2000);
await page.setViewport({width: 1280, height: 720});
await page.screenshot({path: 'example.png', fullPage: true});
await page.close();
await browser.close();
} catch (error) {
throw error;
}
})().catch((error) => {
console.log(error);
process.exit(1);
});
Reference
이 문제에 관하여(CentOS7에서 Puppeteer 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/horikeso/items/0bf9a78454b8124a6dfa텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)