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

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

新規登録して質問してみよう
ただいま回答率
85.35%
スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google API

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

1628閲覧

Javascriptを使ったウェブページのスクレイピング

ryoko_yamanaka

総合スコア1

スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google API

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2020/04/26 22:34

前提・実現したいこと

GASで、Javascriptを使ったウェブページのスクレイピングをしようと考えています。
具体的には、以下の通りです。

【やりたいこと】
対象ページでJavaScriptを使った出力されている情報を取得したい
具体的には以下の通りです。

 <対象ページ>
https://mnrate.com/item/aid/B07YS1N8L3

 <取得したい情報>
「サイズ(中型2)」「最安値(14000)」「出品者数(17)」「3か月の販売数(81個)」

該当のソースコード

function getProductInfo() { //抽出対象URL var url_mono = 'https://mnrate.com/item/aid/B07YS1N8L3' ; var response = getResource(url_mono); var source = parseResponse(response); //sourceに「サイズ(中型2)」「最安値(14000)」「出品者数(17)」「3か月の販売数(81個)」の情報が入っていない } function getResource(target_url) { var _options = { url: target_url, renderType: "html", outputAsJson: true }; var _payload = encodeURIComponent(JSON.stringify(_options)); var _request = "https://phantomjscloud.com/api/browser/v2/" + API-KEY + "/?request=" + _payload; var _response = UrlFetchApp.fetch(_request).getContentText(); return _response; } function parseResponse(response) { var _json = JSON.parse(response); var _source = _json["content"]["data"]; return _source; }

試したこと

PhantomJSを使って、Javascriptのの情報も取得させようと考えましたがうまく動作しません。
var index1 = source.indexOf('中型');
などでキーワードを検索したのですが、対象キーワードが見つからず-1が返却されます。

補足情報(FW/ツールのバージョンなど)

Google Apps Script

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

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

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

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

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

m.ts10806

2020/04/26 23:00

当該サイトはスクレイピングしても問題ないサイトなのでしょうか
papinianus

2020/04/27 01:14

PhantomJSが動くということを知らなかったのですが、出典を共有してください。回答の参考にしたいと考えます。
guest

回答1

0

ベストアンサー

ウェブページのスクレイピング

できません。

ご質問コード内の 抽出対象URL をブラウザに表示して確認したところ、一定のスクレイピング対策がなされています(クライアント・サイド・レンダリング)。

GASのAPIドキュメントでも HTMLのDOMを操作するサービスは提供していませんので、応答されたHTMLを文字列処理する場合に限って、なんとかスクレイピングできる状況です。

このようなGAS のAPI提供状況からも、黎明期の「何でもかんでも情報共有」と、スクレイピングを歓迎する時代は終わり、サイト運営は常に「コストに直結」するため、スクレイピングを否定する時代になっていることを理解してください。

また、ブラウザに表示したHTMLソースを見て、即座に技術的に可否の判断ができないならやめたほうがいいと思います。

スクレイピングのネガティブな側面:

  1. 「IPアドレス&タイムスタンプ」といった証拠ログの提供行為となる。
  2. 利用規約外のアクセス方法を理由に法的措置を取られたら圧倒的不利となる。

黎明期とは異なり、法の整備も進んでいます。

投稿2020/04/28 23:07

AkitoshiManabe

総合スコア5434

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

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

ryoko_yamanaka

2020/04/29 09:08

ご丁寧にご回答下さりありがとうございます。 スクレイピングの現状なども教えていただきありがとうございます。 スクレイピングの対策をされているようなサイトから強引に情報を収集するというようなことを したくありませんので、今回は諦めたいと思います。
AkitoshiManabe

2020/04/29 09:18

技術的視点で PhantomJS への着眼は良いと思ったのですが、利用規約が明示されていないサイトでしたので、ちょっと怖い。そうした考えで、否定的な回答とさせていただきました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問