0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【備忘録】puppeteerでスクレイピングをしたのでページの情報ぶっこ抜くための最低限のソース

Posted at

##前書き
お仕事で指定ページのライブラリのバージョンをすべて調べろとの命が下ったため、
Puppeteerを使用して対象ページをスクレイピングして調べた
その備忘録として最低限機能だけのソース諸々を書く

Puppeteer
https://github.com/puppeteer/puppeteer

###環境
Windows 10 pro 21H2
Puppeteer 13.3.1
node.js 16.14.0

###ソース

puppeteer.js
const puppeteer = require('puppeteer');

//対象画面のURLリスト
let urls = [
  "http://example.com/",
  "http://example.com/",
  "http://example.com/"
];

(async () => {

  const browser = await puppeteer.launch();
  const page = await browser.newPage();

  for(let j=0;j<urls.length;j++){
    console.log("page url = "+urls[j]);
    await page.goto(urls[j], {waitUntil: 'domcontentloaded'});
    let result = await page.evaluate(async()=>{
        //ここにページ読み取り用のjs記載(例としてページのURL取得する)
        var url="";

        url = location.href;
        
        return url;
    });
    console.log(result);
  }
  await browser.close();
})();

結果自体はコンソールの実行結果をテキストファイルから書き出して対応

現状こちらのソースを改変して業務では
・jQueryのバージョンおよびjQuery本体ファイルっぽい(jsの名前にjqueryと入ってる)ファイルの抽出
・リダイレクトしているページのリダイレクト先の確認(ステータスコードの取得もできるはず)
などをおこなった。

もちろんこれ以外にも特定の要素の値をよみとったりなどの色々な使いみちがあるので、
これで色々できそうな気がする。

本来grepでやってしまいたかったが、SSIやjsによる要素の書き換えなどの諸々の諸々が諸々だったりしたので今回の方法で対応した。
一度用意してしまえばgrepでファイルを検索かけるよりも気軽にできる(気がする)ので調査が必要になったときはこいつの存在を思い出したい。

#ToDo
・スクリーンショットやベーシック認証の突破の方法などを覚えておけばなにかしらのときに楽ができそう。
・よく特定ページで読み込まれてる全リソースを洗い出せみたいな指示がくるので、これを利用して楽できる方法を考えたい

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?