2017-12-14 27 views
1

私は、現在のところユーザー主導型のフォームしか公開していない古いWebインターフェイスとのやりとりを自動化しようとしているので、動的リクエストを使ってWebページからいくつかの情報を抜き取る必要があります。Fetch APIレスポンスに対してDOMクエリメソッドを使用できますか?

XHRを使用している場合は、Documentという応答を扱うことができ、querySelectorのようなメソッドを使用して特定のノードから情報を取得できます。私はBodyを与えるだけで、フェッチAPIを使用しようとしたいと思います。これはblobformDatajson、およびtextですが、Documentとして扱うことはできません。

何か不足していますか? fetchから直接問い合わせできるドキュメントなどを入手できますか?そうでない場合は、文字列(Body.text())を取得してドキュメントに変換する簡単な方法はありますか?

+0

あなたはそれがinnerHTMLのだダミー要素にテキストを追加し、それを照会してもらえますか? – Icepickle

+0

https://developer.mozilla.org/nl/docs/Web/API/DOMParserは、HTML文字列からドキュメントを作成するのに役立ちます。 – Shilly

+0

@Icepickle HTML文書全体(''タグがダウンしています)を取得しているので、これを挿入できる唯一の有効なノードは' iframe'の下にありますが、試していません。 – Coderer

答えて

2

フェッチからドキュメントやその他のクエリを直接取得できますか?そうでない場合は、Body.text()から文字列を取り出してDocumentに変換する簡単な方法はありますか?

DocumentをFetch API自体から直接取得することはできません。しかし、DOMParserを使用して、そのparseFromStringメソッドに、Fetch Body.text()約束が解決するテキストを渡すことができます。

fetch("https://enable-cors.org/") 
 
    .then(response => response.text()) 
 
    .then(text => { 
 
    const parser = new DOMParser(); 
 
    const htmlDocument = parser.parseFromString(text, "text/html"); 
 
    const section = htmlDocument.documentElement.querySelector("section"); 
 
    document.querySelector("div").appendChild(section); 
 
    })
<div></div>

+0

これは私がやったことです。私は 'response.html()'のようなものを望んでいましたが、これは動作し、数行しか追加しません。ありがとう! – Coderer

関連する問題