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

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

新規登録して質問してみよう
ただいま回答率
85.31%
Google Apps Script

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

Q&A

1回答

457閲覧

GoogleFinanceで日本株の「財務諸表」の年間データをGASでスクレイピングするには?

toshi_G13

総合スコア4

Google Apps Script

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

0グッド

1クリップ

投稿2024/06/23 05:40

編集2024/06/23 05:44

実現したいこと

GoogleFinanceで日本株の情報をGASでスクレイピングをトライ中です。
(GoogleFinanceはスクレイピングを許可しているサイトと認識しています)
例えばトヨタ自動車(コード:7203)を表示すると当日のデータや財務諸表(損益計算書・貸借対照表・キャッシュフロー)が
閲覧できます。画面には「四半期」と「年間」ボタンがありますが、取得できない「年間」分を取得できるようにしたい。
「年間」分を取得できる方法をご教示・アドバイスを願えればと思います。
トヨタ自動車

発生している問題・分からないこと

現状:GASでCheerioライブラリを使用して、URLデータから「四半期」データは取得できる見込ですが、「年間」分が取得できません。
「年間」ボタンをクリックして画面を確認しながらでも「四半期」データしか取得できません。

動的サイトではGASでは取得できないと聞き、PhantomJsCloudライブラリを使用してみましたが、やはり「年間」データは取得できません。
(ただし、手動でHTML文をドキュメントにコピペすると「年間」データを見ることができます。自動では取得できない?)

実際には、「四半期」と「年間」を切り替える操作もGASではできていないので、これも次の問題ですが、
画面上では見えて、手動コピペでは年間データも見えるので、先にこれができてからかと思います。
GASもスクレイピングも初心者で、やっていることが完全には理解できていませんが、実現できるアドバイスをいただければと思います。

参考にさせていただいたサイト:
PhantomJsCloud
Cheerio
Gas スクレイピング

該当のソースコード

Google

1function get_GoogleFinance_Scraping() { 2 3 const url = 'https://www.google.com/finance/quote/7203:TYO?hl=ja';//目的のURL 4 5 //PhantomJsCloud用の独自関数で動的なWebページのHTMLデータを取得する 6 //const html = phantomJSCloudScraping(url);//PhantomJsCloudで読み込む 7 8 const html = UrlFetchApp.fetch(url).getContentText('UTF-8'); 9 //console.log('html.length=',html.length); 10 11 //Cheerioライブラリ利用 12 const $ = Cheerio.load(html); 13 14 //損益計算書・貸借対照表・キャッシュフローのデータ抽出 15 let $div = $('td.QXDnM');//データ 16 let values = []; 17 $div.each((index, element) => { 18 values.push($(element).text()) 19 }); 20 console.log('values.length=',values.length,'/values=',values);//データをログ出力 21 22}

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

四半期データは取得できますが、年間データは取得できません。

補足

「四半期」のサイト画面とログ出力の例
「年間」のサイト画面とコピペの例
の図を添付します。イメージ説明イメージ説明

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

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

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

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

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

guest

回答1

0

GoogleFinanceはスクレイピングを許可しているサイトと認識しています

どこでそのような認識を得たのでしょうか。当該サイトの免責事項には、以下のようにあります。

ユーザーは、Google の書面による事前の許可なく、提供されるいかなるデータまたは情報を複製、修正、再フォーマット、ダウンロード、保存、再生成、再処理、送信、再配布しないこと、および営利目的で使用しないことに同意するものとします。

投稿2024/06/24 00:57

maisumakun

総合スコア146543

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

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

toshi_G13

2024/06/24 02:31

maisumakunさん、ご回答ありがとうございました。 直接Googleに書面で問い合わせはしておりませんが、google.com/robots.txtで確認すると /financeは許可となっているので、スクレイピング自体は禁止されていないと思っています。 スクレイピングに関しては、いろいろな考え方や事例があるのは知っていますが、相手方サーバーに 大きな負荷とならなければ目こぼし状態ということで、やっている人が多いかと想像しています。 いろいろやってデータが取れないので、今は私のスキルの問題と思っていますが、何か制約事項 があるのかもしれないと、Googleに問い合わせをしました。回答してくれるかどうか不明ですが、 NGという回答や、取れないデータであるとわかればギブアップします。
maisumakun

2024/06/24 02:48

robots.txtで規定するような無差別的なクロールと、ターゲットを決めて行うスクレイピングでは、法的バックグラウンドも違ってきます。
toshi_G13

2024/06/24 03:34

maisumakunさん、再度のご回答ありがとうございました。 下記を参考にあらためてクロールとスクレイピングの違いを見ました。 https://qiita.com/Octoparse_Japan/items/48d318fe0bb5d8b17367 robots.txtの結果はクローラーに対する許可で、データ利用目的のスクレイピングは免責事項にひっかかるということですね。ごっちゃにというか都合よく解釈していました。 結局は、書面で確認するのが一番ということですね。個人相手にまともにOKしてくれるかな?という懸念はありますが、考えてみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問