n8nで取得したHTMLと画面の値が違う:JavaScriptの追加取得を先に分ける
ブラウザでは新しい値なのにn8nのHTTP Requestでは古い値になるなら、最初に取得したHTMLと、表示後に追加されたデータを比べます。更新間隔やRAMを増やす前に、必要な値がどの応答に含まれるかを決めます。
公式資料確認日:。
HTMLの取得と、ブラウザの表示後は別の時点
Webページは初回HTMLの後にJavaScriptで別のデータを取得し、表示を書き換えることがあります。n8nのHTTP Requestで受け取った本文をHTMLノードへ渡すだけでは、ブラウザの追加要求を行った記録にはなりません。
同じ対象・時刻・本人の利用資格で、HTTP応答本文とブラウザに表示された値を比べます。ブラウザの要素一覧だけを元HTMLの証拠にせず、許可されたページの開発者ツールで最初のDocument応答と必要な追加応答を分けます。
値がある場所で次の行動を変える
HTTP RequestのInclude Response Headers and Statusを使うと、本文とstatus・headerを分けて読めます。HTMLはText、構造化応答はJSONとして、HTMLノードの抽出元フィールドとCSS Selectorを対応させます。ログへCookieやAuthorizationを公開しません。
| 観測 | 候補 | 次の判断 |
|---|---|---|
| 初回HTMLに必要な値がある | 抽出元・selector・項目対応 | 保存した本文から抽出対象を照合 |
| 初回HTMLには無く追加応答にある | 表示時に追加取得 | 公式API・許可されたexportの利用条件を読む |
| 同じURLでも認証状態で内容が違う | 要求条件が一致していない | 本人の利用資格と許可された認証方式を確認 |
| 応答値は更新済みだが後続は古い | 下流の入力や保存済み値が候補 | どの実行のどの入力を参照したか照合 |
キャッシュ回避を先に決めない
no-cacheはHTTPキャッシュの検証に関する指定で、JavaScriptの実行を依頼する設定ではありません。URLへ無作為な文字を足しても、必要な値が初回HTMLに無ければ入力の取り違えは残ります。
公開質問の一例でも、投稿者はキャッシュ回避後に値が変わらず、ブラウザのJavaScriptが別URLから値を追加する点へ切り分けています。この事例から、あらゆる古い値の原因を同じと断定はしません。
取得経路は見つけることと、使えることを分ける
開発者ツールでURLが見つかっても、継続利用の許可や安定したAPI仕様まで成立するわけではありません。提供者の公式API、本人が使えるexport、許諾された取得方法を優先し、利用条件・対象キー・更新時刻・上限を照合します。
想定例として、初回HTMLが「準備中」で、許可された追加JSONが「完了」なら、判断に使う値と取得元を対応表へ記録します。この例は実測ではありません。応答を取得できた時刻と、業務データが更新された時刻も分けます。
値の根拠が分からなければ通知を保留する
対象キー・更新時点・利用資格が不明なまま、古い値を最新として通知しません。認証回避や無制限な再取得を使わず、許可された入力が用意できるまで保留します。値が正しく取れた後は、Paginationで全件を取る条件と、後続データの元入力対応へ進めます。
公式資料と、判断例の境界
仕様の根拠は以下の公式資料です。本文の記入例は実測値ではありません。購入・設定変更時は、対象の型番・版・契約条件を照合します。
- n8n:HTTP Requestの応答設定
HTTP要求の応答bodyを取得。Include Response Headers and Statusでheaderとstatusも返せます。応答形式TextとJSONを区別します。
- n8n:HTMLの抽出元と操作
Extract HTML Contentは渡されたHTMLをCSS Selectorで抽出します。Generate HTML Templateのscriptはn8nで実行しないという仕様を、抽出モードの実機試験と混同しません。
- MDN:JavaScriptによる追加取得と表示更新
ブラウザのJavaScriptは追加のHTTP要求でデータを取得しDOMを更新できます。初回HTMLと表示後の内容が異なる原因になります。
- RFC 9111:HTTPキャッシュと検証
no-cache要求は保存応答を使う前の検証を望む指定であり、ページ内JavaScriptの実行命令でも業務データの更新保証でもありません。