我正在嘗試從 html text 獲取資料。
首先獲取 html 文本:
const url = "https://********/dash/video/mp4/RP4-6";
this.http2.get(url, { responseType: "text" as "json" }).subscribe(
(result) => {
console.log(result) // result as html text
},
(error) => {}
);
結果html:
<html>
<head><title>Index of /dash/video/mp4/RP4-6/</title></head>
<body>
<h1>Index of /dash/video/mp4/RP4-6/</h1><hr><pre><a href="../">../</a>
<a href="21-10-27-13-14.mp4">21-10-27-13-14.mp4</a> 27-Oct-2021 10:15 689323
<a href="21-10-27-13-17.mp4">21-10-27-13-17.mp4</a> 27-Oct-2021 10:18 749977
<a href="21-10-27-13-19.mp4">21-10-27-13-19.mp4</a> 27-Oct-2021 10:20 704187
<a href="21-10-27-13-21.mp4">21-10-27-13-21.mp4</a> 27-Oct-2021 10:22 665388
<a href="21-10-27-13-22.mp4">21-10-27-13-22.mp4</a> 27-Oct-2021 10:23 626806
<a href="21-10-27-13-25.mp4">21-10-27-13-25.mp4</a> 27-Oct-2021 10:26 609054
<a href="21-10-27-13-31.mp4">21-10-27-13-31.mp4</a> 27-Oct-2021 10:32 684083
<a href="21-10-27-13-38.mp4">21-10-27-13-38.mp4</a> 27-Oct-2021 10:39 697931
<a href="21-10-27-13-39.mp4">21-10-27-13-39.mp4</a> 27-Oct-2021 10:40 806641
<a href="21-10-27-13-42.mp4">21-10-27-13-42.mp4</a> 27-Oct-2021 10:43 689665
<a href="21-10-27-13-44.mp4">21-10-27-13-44.mp4</a> 27-Oct-2021 10:45 745707
<a href="21-10-27-13-45.mp4">21-10-27-13-45.mp4</a> 27-Oct-2021 10:46 751812
<a href="21-10-27-13-47.mp4">21-10-27-13-47.mp4</a> 27-Oct-2021 10:48 624906
<a href="21-10-27-13-50.mp4">21-10-27-13-50.mp4</a> 27-Oct-2021 10:51 773567
<a href="21-10-27-13-53.mp4">21-10-27-13-53.mp4</a> 27-Oct-2021 10:54 824234
<a href="21-10-27-13-54.mp4">21-10-27-13-54.mp4</a> 27-Oct-2021 10:55 830270
<a href="21-10-27-13-56.mp4">21-10-27-13-56.mp4</a> 27-Oct-2021 10:57 824970
<a href="21-10-27-13-57.mp4">21-10-27-13-57.mp4</a> 27-Oct-2021 10:58 830408
<a href="21-10-27-14-00.mp4">21-10-27-14-00.mp4</a> 27-Oct-2021 11:01 833959
<a href="21-10-27-14-01.mp4">21-10-27-14-01.mp4</a> 27-Oct-2021 11:02 823081
<a href="21-10-27-14-04.mp4">21-10-27-14-04.mp4</a> 27-Oct-2021 11:05 823855
<a href="21-10-27-14-05.mp4">21-10-27-14-05.mp4</a> 27-Oct-2021 11:06 827716
<a href="21-10-27-14-06.mp4">21-10-27-14-06.mp4</a> 27-Oct-2021 11:07 830899
<a href="21-10-27-14-07.mp4">21-10-27-14-07.mp4</a> 27-Oct-2021 11:08 831162
<a href="21-11-02-14-45.mp4">21-11-02-14-45.mp4</a> 02-Nov-2021 12:46 765390
<a href="21-11-02-14-46.mp4">21-11-02-14-46.mp4</a> 02-Nov-2021 12:47 709565
<a href="21-11-02-14-50.mp4">21-11-02-14-50.mp4</a> 02-Nov-2021 12:51 728354
<a href="21-11-02-14-51.mp4">21-11-02-14-51.mp4</a> 02-Nov-2021 12:52 730780
<a href="21-11-02-14-52.mp4">21-11-02-14-52.mp4</a> 02-Nov-2021 13:00 117131
<a href="21-11-02-14-54.mp4">21-11-02-14-54.mp4</a> 02-Nov-2021 12:55 657311
<a href="21-11-02-14-55.mp4">21-11-02-14-55.mp4</a> 02-Nov-2021 12:56 592647
<a href="21-11-02-15-02.mp4">21-11-02-15-02.mp4</a> 02-Nov-2021 13:03 601726
<a href="21-11-02-15-08.mp4">21-11-02-15-08.mp4</a> 02-Nov-2021 15:14 166307
<a href="21-11-02-15-13.mp4">21-11-02-15-13.mp4</a> 02-Nov-2021 13:14 802128
<a href="21-11-02-17-16.mp4">21-11-02-17-16.mp4</a> 02-Nov-2021 15:17 735023
<a href="21-11-02-17-17.mp4">21-11-02-17-17.mp4</a> 02-Nov-2021 15:18 716030
<a href="21-11-02-17-18.mp4">21-11-02-17-18.mp4</a> 02-Nov-2021 15:19 794337
<a href="21-11-02-17-22.mp4">21-11-02-17-22.mp4</a> 02-Nov-2021 15:23 757134
<a href="21-11-02-17-23.mp4">21-11-02-17-23.mp4</a> 02-Nov-2021 15:24 831960
<a href="21-11-02-17-28.mp4">21-11-02-17-28.mp4</a> 02-Nov-2021 15:29 715001
<a href="21-11-02-17-30.mp4">21-11-02-17-30.mp4</a> 02-Nov-2021 15:31 743813
<a href="21-11-02-17-32.mp4">21-11-02-17-32.mp4</a> 02-Nov-2021 15:33 754264
<a href="21-11-02-17-34.mp4">21-11-02-17-34.mp4</a> 02-Nov-2021 15:35 791702
<a href="21-11-02-17-36.mp4">21-11-02-17-36.mp4</a> 02-Nov-2021 15:37 793964
<a href="21-11-02-17-37.mp4">21-11-02-17-37.mp4</a> 02-Nov-2021 15:38 766486
<a href="21-11-02-17-41.mp4">21-11-02-17-41.mp4</a> 02-Nov-2021 15:42 825196
<a href="21-11-02-17-44.mp4">21-11-02-17-44.mp4</a> 02-Nov-2021 15:45 794551
<a href="21-11-02-17-46.mp4">21-11-02-17-46.mp4</a> 02-Nov-2021 15:47 818823
<a href="21-11-02-17-47.mp4">21-11-02-17-47.mp4</a> 02-Nov-2021 15:48 803400
<a href="21-11-02-17-48.mp4">21-11-02-17-48.mp4</a> 02-Nov-2021 15:49 833760
<a href="21-11-04-12-03.mp4">21-11-04-12-03.mp4</a> 04-Nov-2021 10:04 565540
<a href="21-11-04-12-09.mp4">21-11-04-12-09.mp4</a> 04-Nov-2021 10:10 764848
<a href="21-11-04-12-10.mp4">21-11-04-12-10.mp4</a> 04-Nov-2021 10:11 818846
<a href="21-11-04-12-11.mp4">21-11-04-12-11.mp4</a> 04-Nov-2021 10:12 688041
<a href="21-11-04-12-13.mp4">21-11-04-12-13.mp4</a> 04-Nov-2021 10:14 752951
<a href="21-11-04-12-19.mp4">21-11-04-12-19.mp4</a> 04-Nov-2021 10:20 786564
</pre><hr></body>
</html>
我想將所有資料都放在hreflike 中21-11-04-12-13.mp4。
搜索了一段時間后,我有一個想法是將 html 文本轉換為 JSON 物件,是否可行?因為這個頁面不是固定的,里面的資料會改變。
我該如何解決這個問題?
uj5u.com熱心網友回復:
你可以用正則運算式來做,就像這樣:
let tab = [];
tab = str.match(/(?<=href="). ?(?=")/gm);
//remove the first element because it's "../" (line 4 of your example)
tab = tab.slice(1);
結果將是一個包含您想要的所有 href 的陣列
uj5u.com熱心網友回復:
您可以使用 aRegExp提取出匹配特定模式的文本值,然后在 JS 中回傳這些值object。
正則運算式模式>(\d\d\-\d\d\-\d\d\-\d\d\-\d\d\.mp4)<將匹配元素的#text節點內容<a></a>- 盡管您可能更喜歡匹配href=""屬性,如下所示:
href="(\d\d\-\d\d\-\d\d\-\d\d\-\d\d\.mp4)">
function extractFileNames( html: string ): string[] {
const reg = />\d\d\-\d\d\-\d\d\-\d\d\-\d\d\.mp4</ig;
const matches: string[] = [];
let match: RegExpExecArray | null = null;
while( ( match = reg.exec( html ) ) !== null ) {
matches.push( match[0] );
}
return matches;
}
這是一個 JS 演示(已注釋掉 TypeScript 型別注釋):
const sampleInput = `
<a href="21-10-27-14-00.mp4">21-10-27-14-00.mp4</a> 27-Oct-2021 11:01 833959
<a href="21-10-27-14-01.mp4">21-10-27-14-01.mp4</a> 27-Oct-2021 11:02 823081
<a href="21-10-27-14-04.mp4">21-10-27-14-04.mp4</a> 27-Oct-2021 11:05 823855
<a href="21-10-27-14-05.mp4">21-10-27-14-05.mp4</a> 27-Oct-2021 11:06 827716
<a href="21-10-27-14-06.mp4">21-10-27-14-06.mp4</a> 27-Oct-2021 11:07 830899
<a href="21-10-27-14-07.mp4">21-10-27-14-07.mp4</a> 27-Oct-2021 11:08 831162
<a href="21-11-02-14-45.mp4">21-11-02-14-45.mp4</a> 02-Nov-2021 12:46 765390
<a href="21-11-02-14-46.mp4">21-11-02-14-46.mp4</a>`
;
function extractFileNames( html/*: string */ )/*: string[] */ {
const reg = />(\d\d\-\d\d\-\d\d\-\d\d\-\d\d\.mp4)</ig;
const matches/*: string[]*/ = [];
let match/*: RegExpExecArray | null*/ = null;
while( ( match = reg.exec( html ) ) !== null ) {
const entireMatch = match[0];
const justFileNameGroup = match[1];
matches.push( justFileNameGroup );
}
return matches;
}
function doTheThing() {
const extracted = extractFileNames( sampleInput );
//console.log (extracted );
const ul = document.getElementById( 'output' );
for( const m of extracted ) {
const li = document.createElement( 'li' );
li.textContent = m;
ul.appendChild( li );
}
}
<button type="button" onclick="doTheThing()">Click me</button>
<ul id="output"></ul>
uj5u.com熱心網友回復:
首先,您可以將回應文本轉換為 Document 然后您可以使用 DOM API 來檢索 href 值
let doc =new DOMParser().parseFromString(result, "text/xml")
const anchors= doc.getElementsByTagName('a');
let urlList =[];
for (let anchor of anchors) {
urlList.push(cell.getAttribute('href');
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/370018.html
標籤:javascript html 有角的
上一篇:NonUniqueResultExceptionSpringJPA
下一篇:在HTML中計算表格的總和
