Chromeヘッドレスでスクレイピング Node.jsライブラリpuppeteer使ってみた
仕事の依頼でスクレイピングすることがあってヘッドレスブラウザを使ってみた。
目的
ホテルや病院などの検索WEBサイトから
検索結果の名前、住所、電話番号などCSVで取得する
スクレイピングとは
ウェブサイトから情報を抽出するコンピュータソフトウェア技術のこと
Node.jsからChromeのヘッドレスを使うためのライブラリ
chromyだとエラーが出てうまくいかなったし、以下の記事見てpuppeteerを使うことにしました。
ヘッドレスブラウザ(Chrome)を使ってSPAをスクレイピングする - Qiita
puppeteerがこれらのライブラリと一線を画すのは、なんと言っても本家ChromeのDevTool開発チームが作成・メンテナンスしている、という点でしょう。
環境
node v.8.9.1
npm 5.5.1
puppeteer
ソース
参考:puppeteer/search.js at main · puppeteer/puppeteer · GitHub
'use strict'; // puppeteer読込み const puppeteer = require('puppeteer'); // ファイル読み書きライブラリ const fs = require('fs'); (async () => { const browser = await puppeteer.launch(); const page = await browser.newPage(); await page.goto(【URL】); // スクレイピングするセレクタ await page.waitForSelector('#search_result .content'); const links = await page.evaluate(() => { const anchors = Array.from(document.querySelectorAll('#search_result .content')); return anchors.map(anchor => anchor.textContent).map(text => text.trim().replace(/\s+/g, ',')); }); fs.writeFileSync( "puppeteer.csv" , links.join('\n') ); await browser.close(); })();
スクレイピングも始めてて、Node.jsもほとんど未経験ですが結構簡単にできました!すごいね~。
参考
ヘッドレスブラウザ(Chrome)を使ってSPAをスクレイピングする - Qiita
--headless時代の本命? Chrome を Node.jsから操作するライブラリ puppeteer について - Qiita
TechPlay 女子部の皆様へ謝罪
今回はTechPlay女子部のアドベンチャーカレンダーに参加させて頂きました!
初!アドベンチャーカレンダー!(*^^)v
TECH PLAY女子部 Advent Calendar 2017 - Qiita
ただ、私の担当は12日だったのに・・ずるずるずるるるうzzz
ここまで引き延ばしてすみませんでした。。しかも内容も予告してたのと違う・・
来年は計画的に頑張りまっす。