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

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

新規登録して質問してみよう
ただいま回答率
87.20%
Google スプレッドシート

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

Google Apps Script

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

JavaScript

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

解決済

Webスクレイピング時に正しいhtmlを取得できない&「Security Measure」と表示される

Risney
Risney

総合スコア138

Google スプレッドシート

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

Google Apps Script

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

JavaScript

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

1回答

0評価

1クリップ

269閲覧

投稿2022/08/17 07:10

前提

Pythonは使わず、
GASを使用してログインが必要なWebページのスクレイピングして、
取得した文字列をGoogleスプレッドシートに出力したいです。

実現したいこと

ログイン後のページのhtml内の要素の取得

eBayアカウントページ(下図参考)の
右セクションShipping details内のDate shippedの値「Aug 11, 2022」を取得したいです。
イメージ説明

発生している問題・エラーメッセージ

ログに出力しても想定通りの結果になりませんでした。。

これはページが動的だからでしょうか。
それとも「Security Measure」と表示されるので、
なんらかのセキュリティ対策が取られているからでしょうか。

アドバイスいただけますと幸いです。
よろしくお願いいたします。

該当のソースコード

以下を抽出しています。
①右ブロックの「Shipping details」
②「Date shipped」のタグ

javascript

var scraping_url = urlArray[0]; response = UrlFetchApp.fetch(scraping_url, get_option); var content = response.getContentText("UTF-8"); // ①ブロックを抽出 var shipping_details_block = Parser.data(content).from('class="card-old last-card">').to('</div>').build(); Logger.log(shipping_details_block); // ②指定のタグで囲まれているテキストを抽出 var content_block = Parser.data(content).from('<dt class="info-label">Date shipped</dt><dd>').to('</dd>').iterate(); Logger.log(content_block);

①抽出したブロックのログ

Logger.log(shipping_details_block);

en><head><meta http-equiv=X-UA-Compatible content=IE=Edge><meta name=viewport content="width=device-width, initial-scale=1"><link rel=icon href=https://pages.ebay.com/favicon.ico><link rel="dns-prefetch" href="//ir.ebaystatic.com"><link rel="dns-prefetch" href="//secureir.ebaystatic.com"><link rel="dns-prefetch" href="//i.ebayimg.com"><link rel="dns-prefetch" href="//rover.ebay.com"><script>$ssgST=new Date().getTime();</script><meta charset=utf-8><title>Security Measure</title><style> #dCF_captcha_text { display: none !important; } .pgHeading { margin: 10px 0px 20px 10px; padding: 10px 0px 0px 0px; } .pgHeading > h1 { line-height: 27px; text-align: left; margin: 0px 10px 20px 0px; font-size: 1.2em; font-family: Arial, Helvetica, sans-serif; font-weight: normal; color: #5d5d5d; } .pgCenter { margin: 10px 10px 10px 10px; text-align: justify; font-size: 1.1em; } .captcha-not-rendered-msg-div a:link { text-decoration: underline; } </style><link rel="stylesheet" type="text/css" href="https://ir.ebaystatic.com/rs/v/ggfnycmu2m0o5nosyro3abui0ma.css?proc=DU:N"><link rel=stylesheet href=https://ir.ebaystatic.com/rs/c/captcha-CpAsu5pR.css></head><body class=no-touch><div id=gh-gb tabindex=-1>

②タグ取得時のログ

Logger.log(content_block);

[<!DOCTYPE html><html lang=en><head><meta ht]

試したこと

matchメソッドでテキストを抜き出せるのでは。
と思い試してみましたが、セキュリティ対策によりできず。

javascript

var regText = /<title>([\s\S]*?)<\/title>/; var html = content.match(regText); Logger.log(html);

ログ

Logger.log(html);

[<title>Security Measure</title>, Security Measure]

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

参考サイト:
GASでログインしてスクレイピングする方法【コード付きで解説】
GASでWebスクレイピングを行う方法
【GAS】matchメソッドの使い方・正規表現

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

sk-sora--ypi

2022/08/17 14:55

>これはページが動的だからでしょうか。 その通りです、GASでのスクレイピングは静的です。 PythonでいうrequestsとBeautifulSoupを使ったようなアクセスと考えてください。
Risney

2022/08/18 01:28

回答ありがとうございます! 回答欄に入力していただければ、ベストアンサーとさせていただきますのでよろしくお願いいたします。
sk-sora--ypi

2022/08/18 12:37

色々確認しようと思ったんですが要らないなぁと思い結局上だけになってましたw
Risney

2022/08/19 06:58

そうなのですねw 「PhantomJsCloud」というライブラリで動的に生成されるWebページのHTMLを取得できるようなので、一旦そちらでやってみたいと思います!

まだ回答がついていません

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Google スプレッドシート

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

Google Apps Script

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

JavaScript

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