正規表現
ローカルにファイルがある前提ですが、grepで検索してみてはいかがでしょうか。
'リモートにしかファイルが存在しないのなら、Webサイトを丸ごとダウンロードする必要があります。)
plain
1id\s*=\s*(?:"[^"]+"|'[^']+'|[^"'=<>\s]+)
2class\s*=\s*(?:"[^"]+"|'[^']+'|[^"'=<>\s]+)
抽出したログを正規表現の一括置換、Excelなどで整形します。
DOM
ページ単位なら、x_x さんが回答されているようにJavaScriptを使うのが楽です。
以下、未検証ですが、コードの流れを追うのに使って下さい。
JavaScript
1var idList = Array.prototype.map.call(document.querySelectorAll('[id]'), element => element.id);
2
3var classList = Array.prototype.reduce.call(document.querySelectorAll('[class]'), (classList, element) => (Array.prototype.push.apply(classList, element.classList), classList), []);
複数ページに対応するには、ページ全体のa要素を抽出し、見えないiframe要素を構築して、対象のページのDOMを参照し、上記コードと同じ実装を再帰的に繰り返します。
内部リンク/外部リンクの区別は location.host
と比較すれば、確認出来るでしょう。
この方法の良いところはURIとid/class一覧の対応関係を確実に保証出来ることです。
正規表現の場合は実ファイルの場所との対応関係になりますが、mod_rewiteなどを使ってURIを改変していると、URIとの対応関係を知るためにもう一手間必要になります。
Re: oimo014 さん