こんにちは、「ふ」です。
みなさんは自分のサイト管理、どのように行っていますか?
形式はどうあれ、url一覧や内部リンクの状態は、把握できるようにしておきたいものです。
しかしながら、HTMLファイルから1つ1つ手作業でリンク先を抽出していくのは、なかなかに大変💧
ここは、JavaScriptを使って自動で抽出してしまいましょう。
今回はHTMLファイルからリンク先のurlを抽出する方法について紹介していきます。数行のコードを追加するだけで、リンク先のリストが自動で出力されるようになります。
みなさんのHTMLファイルにもコードを追加して、サイト管理に役立ててください。
JavaScriptでリンク先を取り出す、
やり方は簡単。
<a href = 「「5"〇〇"」」>
a要素のhref属性の値を抽出し、1つの配列に格納していくというものです。
<!DOCTYPE html> <html lang = "ja"> <head> 〜 </head> <body> <nav> 〜 </nav> 「「1<div id = "area">」」 bb<a href = "https://fuuno.net">..</a> bb<a href = "https://heeno.net">..</a> bb<a href = "https://hoono.net">..</a> 「「1</div>」」 </body> </html>
HTMLファイル全体の中から、リンク先を抽出したい部分を<div> 〜 </div>で囲んでおきましょう。
というのも、ナビゲーション部分やフッターにおいては各ページ共通のリンクが並べられていることが多いかと思われます。それらのリンク先を抽出しても、「リンク情報」としてはあまり意味がないからです。
サンプルではid名を「area」としました。その中には3つのリンク先が置かれています。
それではJavaScriptで、リンク先をまとめた配列を作っていきます。コードは抽出したい部分よりも後ろに記述するようにしてください。
「「3//検索範囲のHTMLを取得」」「「1 ..@1@」」 let area = document.getElementById("area") 「「3//a要素を全て取得」」「「1 ..@2@」」 let anchors = area.querySelectorAll("a"); 「「3//配列を生成」」「「1 ..@3@」」 let anchorArr = []; 「「3//すべてのa要素のhref属性の値を配列に追加」」「「1 ..@4@」」 for(a of anchor) { anchorArr.push(a.getAttribute("href")) }
@1@ 先ほど「#area」で囲んでおいた範囲を取得します。
@2@ 範囲内のa要素を取得。
@3@ 結果を格納する配列を生成。今は空の状態です。
@4@ for of文とgetAttributeメソッドを使い、a要素のhref属性の値を配列に格納していきます。
console.log(anchorArr); 「「1▶︎ (3) ['https://fuuno.net', 'https://heeno.net', 'https://hoono.net']」」
配列を出力してみると、リンク先のurl一覧が表示されました。
最後までお読みくださり、ありがとうございます。
HTMLコード内にある「リンク先のurlを取得」となると正規表現を使った方法が浮かびます。
しかしそれでは、リンク先ではない外部読み込みコードやimgの参照先なども抽出されてしまい、それらから更に正規表現を使って絞り込んでいく....という作業が発生してしまいます。
しかしよくよく考えてみると、何のことはない。a要素からhref属性を取り上げれば良いだけのことでした。物事を難しく考えてしまう「ふ」の悪いクセです、ふふふ。
ではまた〜 ♪
JavaScript、乱数の範囲や重複を指定〜Math.random使い方。
2021.11.17
整数/範囲/重複の有無を自在にあやつろう。
JavaScriptコードの「?」をまとめたページはこちら⬆︎。
swift、web、ガジェットなど。役立つ情報や観ていてたのしいページを書いていきたいと思います。