46919

[code]

    var url = 'https://Webページ';
    var response = UrlFetchApp.fetch(url);
    var html = response.getContentText();
    
[/code]

Google Apps Script で上記のようにして取得した HTML のデータ 間のコードと、Google Chrome
の検証から要素をコピーして見比べるとデータに違いがありました。

具体的に言いますと、ある通販サイトで 58 点あるう商品のうち、上から 42 点までしか読み込めませんでした。Google Apps Script
で取得したデータには、そもそも残りの 16 点のコードが存在していませんでした。

ブラウザ上で明らかに見えていて、要素を検証でも確認できるにも関わらず、getContentText
で異なるコーディングのデータが取得されるのは、どのような理由からなのでしょうか。


CC BY-SA 4.0
2018-07-24T08:30:35.847
46905
2019-09-25T10:01:30.183
2018-07-24T14:18:02.820
19110
29440
question
google-apps-script
getContentText で取得したデータとブラウザの検証から取得したデータが異なる


> ブラウザ上で明らかに見えていて、要素を検証でも確認できるにも関わらず、getContentText
> で異なるコーディングのデータが取得されるのは、どのような理由からなのでしょうか。

今回の現象と同じかはわかりませんが、  
クライアントサイドスクリプトと連携して表示を行うページの場合は、このような現象が発生すると思います。

例えば、以下のように  
サーバーサイドで生成された静的な商品データ表示と、ページを表示してからのクライアントサイドによる動的な商品データ表示を組み合わせたページなどです。  
想像ですが、`UrlFetchApp.fetch`はページ内のjavascriptの実行までは行わないと思いますので、`response.getContentText()`で取得したHTML内には、商品1〜5の情報しか記載されていないと思います。

[code]

    <ul class="items">
      <!-- サーバーサイドで生成 -->
      <li>商品1/li>
      <li>商品2/li>
      <li>商品3/li>
      <li>商品4/li>
      <li>商品5/li>
    </ul>
    
    <script>
     // ページがロードされてから
     // itemsに残りの商品情報サーバーから取得し商品6〜10を追加
    </script>
    
[/code]


CC BY-SA 4.0
2018-07-24T15:00:30.510
46919
2018-07-24T15:00:30.510
46905
answer