質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
npm

npmは、Node Packaged Modulesの略。Node.jsのライブラリ・パッケージを管理できるツールです。様々なモジュールを簡単にインストールでき、自分でモジュールを作成し公開する際にも使用できます。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Q&A

1回答

1981閲覧

jsで取得したデータをデータベースに保存する方法

medalot

総合スコア4

npm

npmは、Node Packaged Modulesの略。Node.jsのライブラリ・パッケージを管理できるツールです。様々なモジュールを簡単にインストールでき、自分でモジュールを作成し公開する際にも使用できます。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

0グッド

1クリップ

投稿2020/06/08 01:32

前提・実現したいこと
・自身プログラミング経験が浅いため、お伝えする内容に不備や、漏れがあれば
ご指摘いただいても大丈夫です

[実現したいこと]
・amazonの商品をスクレイピングで、家電の商品の価格を抽出した情報を
データベースを使用して保存したい

発生している問題
[現状]
・ターミナルにて、npm i puppeteer
puppeteerをインストール
・プロジェクトのディレクトリ内に、test.js

amazonのサイトまでは、いきデータは抽出できているかと
思うのですが、その先が、
どう対応すればいいのかわからず、進めることができません。

データベースは、MySQLを予定しております。

該当のソースコード

・test.js

const puppeteer = require("puppeteer"); (async () => { const browser = await puppeteer.launch({ headless: false, // 動作確認するためheadlessモードにしない slowMo: 500, // 動作確認しやすいようにpuppeteerの操作を遅延させる }); const page = await browser.newPage(); //生活家電のページへ行く。 await page.goto("https://www.amazon.co.jp/%E7%94%9F%E6%B4%BB%E5%AE%B6%E9%9B%BB/b?node=124048011", { waitUntil: "networkidle2", }); //セレクターで指定したノードが表示されるまで待機 await page.waitFor(".a-section.octopus-best-seller-card"); //カテゴリーのリンクを取得(空調・季節家電、キッチン家電など) let category_urls = await page.evaluate((selector) => { let urls = []; document.querySelectorAll(selector).forEach((node, i) => { urls.push(node.href); }); return urls; }, "a.octopus-pc-category-card-v2-category-link"); console.log(category_urls); //上で取得したカテゴリーのURLの中から一つを選ぶ。 let category_url = Math.floor(Math.random() * category_urls.length); category_url = category_urls[category_url]; console.log(category_url); //カテゴリーのIDを取得 let category_id = category_url.replace(/^.*node=/i, "").replace(/&.*/, ""); console.log(category_id); //アマゾンおすすめ商品順 let page_url = "https://www.amazon.co.jp/s?rh=n:" + category_id + "&s=featured-rank"; //アマゾンおすすめ商品のページへいく。 await page.goto(page_url, { waitUntil: "networkidle2", }); //セレクターで指定したノードが表示されるまで待機。 await page.waitFor("#search + *"); //ページから商品の情報を取得。 let items = await page.evaluate((selector) => { let data = []; document.querySelectorAll(selector).forEach((node, i) => { let obj = {}; //商品のタイトルを取得 let title = node.querySelector("a.a-text-normal span.a-text-normal"); title = title.textContent.trim(); obj.title = title; //商品の価格を取得 let price = node.querySelector("span.a-price-whole") || node.querySelector("span.a-color-price"); price = (price && price.textContent.trim()) || ""; obj.price = price; //配列にタイトル、価格のデータを入れたオブジェクトを追加 data.push(obj); }); return data; }, "div.s-result-list div[data-asin][data-uuid]"); //itemsは配列でitems[0].titleでタイトル、items[0].priceで値段を取得。 console.log(items); //ブラウザを閉じる await browser.close(); })()

補足情報(ツールのバージョンなど)
・macOS Catalina バージョン10.15.3使用
・ターミナル使用
・VScode使用
・node.js v13.11.0
・npm 6.13.7

ご協力の程、お願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

nodejsでMySQLにアクセスしたいならば

mysql2

を使うといいですよ。

投稿2020/06/08 04:34

rururu3

総合スコア5545

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問