回答編集履歴
3
テキスト修正
answer
CHANGED
@@ -57,8 +57,8 @@
|
|
57
57
|
できそうな気がしますが、機能が充実しているHTMLパーサーのライブラリがある
|
58
58
|
言語を選ぶのがよいと思います。
|
59
59
|
とはいえ、HTMLから、CSSセレクタなりXPathで要素を取ってくるのは、いわ
|
60
|
-
ゆるスクレイピングと呼ばれるよく知られた技術の範疇なので、どの言語でも
|
60
|
+
ゆるスクレイピングと呼ばれるよく知られた技術の範疇なので、どの言語でも便利な
|
61
|
-
|
61
|
+
ものはあると思います。(JavaならJsoup、RubyならNokogiri、など)
|
62
62
|
|
63
63
|
以上が、私からの回答としての
|
64
64
|
「こんなプログラムを書けばいいのでは?」
|
2
テキスト修正
answer
CHANGED
@@ -5,9 +5,11 @@
|
|
5
5
|
レートですが)とCSSファイルがあり、本当に活きてるスタイルがどれなのか、すぐには分か
|
6
6
|
らない状況になっていますので、おっしゃるような
|
7
7
|
|
8
|
-
> (1) htmlから使用しているCSS(最終的に効いているスタイル)だけ抽出してまとめて
|
8
|
+
> (1) htmlから使用しているCSS(最終的に効いているスタイル)だけ抽出してまとめて
|
9
|
+
> くれるようなツール
|
9
10
|
>
|
10
|
-
> (2) CSS内に記述されたスタイル側から、そのスタイルが適用されている箇所がわかる
|
11
|
+
> (2) CSS内に記述されたスタイル側から、そのスタイルが適用されている箇所がわかる
|
12
|
+
> 方法やツール
|
11
13
|
|
12
14
|
があればいいなと思いまして、軽くGoogleで調べてみましたが、案外無いものですね。
|
13
15
|
(あっても良さそうなものだけど、と正直思いましたが)
|
@@ -18,8 +20,8 @@
|
|
18
20
|
と思うので、以下に、実際作るならば、どんなプログラムになるのかのアウトラインを記し
|
19
21
|
ました。
|
20
22
|
|
21
|
-
まず、最も単純な場合として、ある1つのHTMLファイルに1つのCSSファイルが
|
23
|
+
まず、最も単純な場合として、ある1つのHTMLファイルに1つのCSSファイルが
|
22
|
-
ケースを想定して、以下のプログラム1、2を作成します。
|
24
|
+
読み込まれているケースを想定して、以下のプログラム1、2を作成します。
|
23
25
|
|
24
26
|
- プログラム1
|
25
27
|
|
@@ -28,9 +30,11 @@
|
|
28
30
|
- プログラム2
|
29
31
|
|
30
32
|
(1)検証対象のHTMLをパースして、(プログラムの中で)要素のツリーを作る。
|
31
|
-
(2)プログラム1が作ったセレクタのリストを読んで、上から順にそのセレクタに相当する
|
33
|
+
(2)プログラム1が作ったセレクタのリストを読んで、上から順にそのセレクタに相当する
|
32
|
-
(※該当要素を抽出するために、セレクタをXPathに変換する必要がある
|
34
|
+
要素数を数える。(※該当要素を抽出するために、セレクタをXPathに変換する必要がある
|
35
|
+
かもしれないので、その際は適宜変換)
|
33
36
|
(3)その数えた結果を、ファイル(CSVとか)に、セレクタと該当数を1行にカンマ区切りで出力
|
37
|
+
→注目すべきは、該当数が0のセレクタですね。
|
34
38
|
|
35
39
|
といった処理を行うプログラムを書くことになるかと思います。
|
36
40
|
|
@@ -43,17 +47,18 @@
|
|
43
47
|
あとは、
|
44
48
|
- 1つのCSSが複数のCSSをimport している場合
|
45
49
|
や
|
46
|
-
- 静的なHTMLではなく、プログラムで動的にHTMLを作っている場合(例:Smarty
|
50
|
+
- 静的なHTMLではなく、プログラムで動的にHTMLを作っている場合(例:Smarty、JSPなど)
|
47
51
|
|
48
|
-
に対応しなければなりませんが、
|
52
|
+
に対応しなければなりませんが、これらは 1HTML-1CSSのチェックの応用なので、
|
49
53
|
(それなりに時間はかかると思いますが、)すごく難しいアルゴリズムを考えないと
|
50
54
|
クリアできない種類の難問ではないと思います。
|
51
55
|
|
52
56
|
これを実装する言語としては、PHPでもJavaでもRubyでも、または他の言語でも
|
53
57
|
できそうな気がしますが、機能が充実しているHTMLパーサーのライブラリがある
|
58
|
+
言語を選ぶのがよいと思います。
|
54
|
-
|
59
|
+
とはいえ、HTMLから、CSSセレクタなりXPathで要素を取ってくるのは、いわ
|
55
|
-
|
60
|
+
ゆるスクレイピングと呼ばれるよく知られた技術の範疇なので、どの言語でも
|
56
|
-
|
61
|
+
便利なものはあると思います。(JavaならJsoup、RubyならNokogiri、など)
|
57
62
|
|
58
63
|
以上が、私からの回答としての
|
59
64
|
「こんなプログラムを書けばいいのでは?」
|
1
テキスト修正
answer
CHANGED
@@ -15,10 +15,9 @@
|
|
15
15
|
そこで、(私はサーバー側+フロントエンドのJSも書くプログラミング担当なのですが、)
|
16
16
|
もし、WEBデザインやコーディングのチームのほうからgrapeeeさんのような要望があった
|
17
17
|
場合どうするかを考えましたが、多分「ツールを作ってしまいましょう」という提案をする
|
18
|
+
と思うので、以下に、実際作るならば、どんなプログラムになるのかのアウトラインを記し
|
18
|
-
|
19
|
+
ました。
|
19
20
|
|
20
|
-
そこで、以下に実際作るならば、どんなプログラムになるのかのアウトラインを記しました。
|
21
|
-
|
22
21
|
まず、最も単純な場合として、ある1つのHTMLファイルに1つのCSSファイルが読み込まれている
|
23
22
|
ケースを想定して、以下のプログラム1、2を作成します。
|
24
23
|
|