puppeteer
#Node.js
#Javascriptのライブラリ
puppet = 操り人形
puppeteer = 操り人形師
chromiumをソフトウェアで操れるようにするライブラリ
ここを見ろ
https://pptr.dev/
https://github.com/puppeteer/puppeteer/blob/main/docs/api.md
Node.js でのインストール方法
npm install puppeteer
Node.js での使い方
xpathを指定する場合
code:pu.js
const puppeteer = require('puppeteer');
(async () => {
// ブラウザを起動する
const browser = await puppeteer.launch();
// タブを一個得る
const page = await browser.pages();
// URLを指定して開く
await page.goto('https://yahoo.co.jp', {waitUntil: 'networkidle2'});
// XPathを使ってElementを探す
const clickElements = await page.$x('//*@id="tabTopics2"/a');
// 探しだしたElementをclickする
await clickElements0.click();
// スクリーンショットを撮って保存する
await page.screenshot({ path: './screenshot.png' });
// ブラウザを閉じる
browser.close();
})();
cookieを指定する場合
code:tw.js
const yargs = require("yargs");
const puppeteer = require('puppeteer');
const fs = require('fs');
const argv = yargs
.option('cookie', {
description: 'cookie file path to set puppeteer.',
type: 'string'
})
.help()
.argv;
(async () => {
// ブラウザを起動する
const browser = await puppeteer.launch();
// タブを一個得る
const page = await browser.pages();
// クッキーをセットする
if(argv.cookie){
let cookieJSON = fs.readFileSync(argv.cookie);
let cookie = JSON.parse(cookieJSON);
page.setCookie(...cookie)
}
await page.goto('https://twitter.com', {waitUntil: 'networkidle2'});
const clickElements = await page.$x('//*@href="/compose/tweet"');
await clickElements0.click();
const inputElements = await page.$x('//*@data-testid="tweetTextarea_0"');
// 探しだしたElementに文字列を入力する
await inputElements0.type('Hello world');
const submitElements = await page.$x('//*@data-testid="tweetButton"');
await submitElements0.click();
browser.close();
})();