2019年の更新...
これは、blueiurの回答に基づいて構築され、ソリューションをより詳細に説明します。JSDOM
使用する前にインストールする必要があります:
npm install jsdom
これで、ドキュメントによると、次のJSDOM
ようにインスタンス化できます。
const jsdom = require('jsdom');
const { JSDOM } = jsdom;
解析したいHTMLがすでにあるので、例を使用してテンプレートリテラルとして定義します。
const data = `<iframe width="100%" height="166" scrolling="no" frameborder="no"
src="http://w.soundcloud.com/player/?url=http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F11111111&auto_play=false
&show_artwork=true&color=c3000d&show_comments=false&liking=false
&download=false&show_user=false&show_playcount=false"></iframe>`;
ここに楽しい部分があります...NodeJSでhtmlを解析します:
const { document } = (new JSDOM(data)).window;
ここで何が起こっているのですか?提供されたHTMLを使用して新しいJSDOMオブジェクトを作成し、document
属性の属性を取得していwindow
ます。この時点からdocument.getElementsByTagName()
、ブラウザの場合と同じように、およびその他の同様の機能を使用できます。
特定の例を続けるために、ドキュメント内src
ののみの属性を抽出する必要iframe
があります。これを行うには複数の方法があります。1つの例は、次のようgetElementsByTagName
に最初のプルを使用することです。iframe
const src1 = document.getElementsByTagName('iframe')[0].src;
src
属性ができたので、それを分割してurl
クエリ値を処理できます。URL
ここで、NodeJSに付属するクラスを使用します。ドキュメントによると、URLオブジェクトを作成し、次のsearchParams
ように属性にアクセスすることで、検索パラメータを取得できます。
const params = (new URL(src1)).searchParams;
これで、クエリ文字列がURLSearchParams
オブジェクトとして取得され、次のように個々の用語にアクセスできます。
const scURL = params.get('src');
今の内容を見るとscURL
、クエリとして渡された埋め込みURLであることがわかります。そのため、別のオブジェクトでそれを解析し、次のように属性URL
を抽出できます。pathname
const src2 = (new URL(src2)).pathname;
近づいてきました。JavaScriptの標準の文字列関数を使用して、パスを目的のget値に分割できます。
const val = src2.split('/')[2];
そして結果を印刷します:
console.log(val);
...これはこの出力を生成します:
11111111
要約すると、完全なコードは次のとおりです。
const jsdom = require('jsdom');
const { JSDOM } = jsdom;
const data = `<iframe width="100%" height="166" scrolling="no" frameborder="no"
src="http://w.soundcloud.com/player/?url=http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F11111111&auto_play=false
&show_artwork=true&color=c3000d&show_comments=false&liking=false
&download=false&show_user=false&show_playcount=false"></iframe>`;
const { document } = (new JSDOM(data)).window;
const src1 = document.getElementsByTagName('iframe')[0].src;
const params = (new URL(src1)).searchParams;
const scURL = params.get('src');
const src2 = (new URL(src2)).pathname;
const val = src2.split('/')[2];
console.log(val);
それを自由に統合し、必要に応じて中間値を削除してください。