Node.js/JavaScriptとPuppeteerを使用し、Amazon(アマゾン)をスクレイピングすることについて解説しています。
なお、JavaScriptの実行にはNode.jsとnpm(Node Package Manager)を使用するので、コンピュータにNode.jsとnpmがインストールされている必要があります。
■PC環境
・Windows10、Administrator(管理者)アカウント
・node –version v14.15.0
・npm –version 6.14.8
■空のディレクトリを用意する
まずはWindows10上に空のディレクトリを用意します。今回は「C:\Users\Administrator(フォルダパス)」に「web_scraping」というディレクトリを用意しました。
■package.json(初期値)を作成する
用意したあとに、Windows10の検索ボックスで「cmd」と入力し、コマンドプロンプトをクリックします。クリックすると、コマンドプロンプトが起動します。
C:\Users\Administrator>cd web_scraping
上記のコマンドを入力し、Enterキーを押します。cdコマンドでディレクトリに移動します。
C:\Users\Administrator\web_scraping>npm init -y
移動後、上記のコマンドを入力し、Enterキーを押します。package.json(初期値)を作成します。
Enterキーを押すと、package.jsonが作成され、package.jsonの中身が出力されます。
■Puppeteerのインストール
C:\Users\Administrator\web_scraping>npm install puppeteer
出力後、上記のコマンドを入力し、Enterキーを押します。
> puppeteer@9.0.0 install C:\Users\Administrator\web_scraping\node_modules\puppeteer > node install.js Downloading Chromium r869685 - 166.1 Mb [====================] 100% 0.0s Chromium (869685) downloaded to C:\Users\Administrator\web_scraping\node_modules\puppeteer\.local-chromium\win64-869685 npm notice created a lockfile as package-lock.json. You should commit this file. npm WARN web_scraping@1.0.0 No description npm WARN web_scraping@1.0.0 No repository field. + puppeteer@9.0.0 added 54 packages from 72 contributors and audited 54 packages in 45.876s 8 packages are looking for funding run `npm fund` for details found 0 vulnerabilities
Enterキーを押すと、インストールが開始され、完了となります。
■スクリプトを作成する
完了後、スクリプトを作成するために、「C:\Users\Administrator(フォルダパス)」の「web_scraping」ディレクトリ内に「scrapers.js」というjsファイルを作成します。作成後、このファイルをコードエディタで開きます。
■コード(scrapers.js)
const puppeteer = require('puppeteer'); async function scrapeProduct(url){ const browser = await puppeteer.launch(); const page = await browser.newPage(); await page.goto(url); const [el] = await page.$x('//*[@id="productTitle"]'); const txt = await el.getProperty('textContent'); const rawTxt = await txt.jsonValue(); console.log({rawTxt}); browser.close(); } scrapeProduct('https://www.amazon.co.jp/商品詳細ページ');
Webブラウザでアマゾン(https://www.amazon.co.jp/)の商品詳細ページにアクセスし、ページ内の要素を取得し、コンソールに要素内のテキストを出力します。今回は商品のタイトルを取得して出力してみます。
■ページ内の特定要素(Xpath)を取得する場合
アマゾン(https://www.amazon.co.jp/)のページ内の特定要素(Xpath)を取得する場合は、GoogleChrome上で取得した要素にマウスを移動し選択します。
選択後、右クリックします。クリックすると、メニューが表示されますので、この中から「検証」をクリックします。
クリックすると、右側にWebページのソースが表示され、選択した部分が水色に表示されます。この状態で右クリックします。すると、メニューが表示され「Copy」をクリックします。さらにメニューが表示されますので「Copy Xpath」をクリックします。
クリックすると、特定要素(Xpath)がコピーされますので、あとはコードエディタへ追加します。
■実行
スクリプトが完成した後は、実際にAmazon(アマゾン)をスクレイピングできるのか検証のため、実行させてみます。今回は、コマンドプロンプトから実行してみます。
C:\Users\Administrator\web_scraping>node scrapers.js
実行する際は、上記のコマンドを入力し、Enterキーを押します。
Enterキーを押すと、ブラウザが自動的に起動し、今回指定したアマゾン(https://www.amazon.co.jp/)の商品詳細ページにアクセスし、ページ内の特定要素を取得し、出力させることができました。
コメント