回答編集履歴

1

DOM

2018/01/03 03:50

投稿

think49
think49

スコア18166

test CHANGED
@@ -1,3 +1,7 @@
1
+ ### 正規表現
2
+
3
+
4
+
1
5
  ローカルにファイルがある前提ですが、**grep**で検索してみてはいかがでしょうか。
2
6
 
3
7
  'リモートにしかファイルが存在しないのなら、Webサイトを丸ごとダウンロードする必要があります。)
@@ -14,4 +18,42 @@
14
18
 
15
19
 
16
20
 
21
+ 抽出したログを正規表現の一括置換、Excelなどで整形します。
22
+
23
+
24
+
25
+ ### DOM
26
+
27
+
28
+
29
+ ページ単位なら、x_x さんが回答されているようにJavaScriptを使うのが楽です。
30
+
31
+ 以下、未検証ですが、コードの流れを追うのに使って下さい。
32
+
33
+
34
+
35
+ ```JavaScript
36
+
37
+ var idList = Array.prototype.map.call(document.querySelectorAll('[id]'), element => element.id);
38
+
39
+
40
+
41
+ var classList = Array.prototype.reduce.call(document.querySelectorAll('[class]'), (classList, element) => (Array.prototype.push.apply(classList, element.classList), classList), []);
42
+
43
+ ```
44
+
45
+
46
+
47
+ 複数ページに対応するには、ページ全体のa要素を抽出し、見えないiframe要素を構築して、対象のページのDOMを参照し、上記コードと同じ実装を再帰的に繰り返します。
48
+
49
+ 内部リンク/外部リンクの区別は `location.host` と比較すれば、確認出来るでしょう。
50
+
51
+
52
+
53
+ この方法の良いところはURIとid/class一覧の対応関係を確実に保証出来ることです。
54
+
55
+ 正規表現の場合は実ファイルの場所との対応関係になりますが、mod_rewiteなどを使ってURIを改変していると、URIとの対応関係を知るためにもう一手間必要になります。
56
+
57
+
58
+
17
59
  Re: oimo014 さん