ごくごくたまにではあるのだが、GoogleやらBingの検索結果を一覧で取得することがあったのでそういうスクリプトをこさえて対応していた。 で、その実行結果で特定のドメインの検索結果からPATHごとにどのようなGETパラメータが使われているか集計したいということがあった。

具体的に言うと、例えば自分がよくお世話になっている上田先生のブログ(https://b.ueda.tech/)で検索かけて、その結果となるURLの一覧を抽出したとする(上田先生勝手にスミマセン…)。 その場合、以下のようなURLの一覧が取得されるのだが、そのPATHごとにどのようなGETパラメータをのパラメータ名を集計するのが今回やることになる。

[blacknon@thinkpad25][~/Work/201912/20191202]
(`・ω・´)  < websearch search -P socks5://localhost:18080 -t google yahoo bing -T 'site:b.ueda.tech' | tee b.ueda.tech.list
Google Text Search: site:b.ueda.tech Yahoo Text Search: site:b.ueda.tech Bing Text Search: site:b.ueda.tech -> No more links Bing
-> Finally got 0 links Bing
-> No more links Google
-> Finally got 300 links Google
[GoogleSearch]: 上田ブログ: 近況: https://b.ueda.tech/
[GoogleSearch]: 12月に開催する2つの勉強会について個人でも宣伝し ... - 上田ブログ: https://b.ueda.tech/?post=01630
[GoogleSearch]: pmat version 0.001 | 上田ブログ: https://b.ueda.tech/?post=00697
[GoogleSearch]: 詳解確率ロボティクスのハンズオン勉強会をします | 上田ブログ: https://b.ueda.tech/?post=20191003_sice
[GoogleSearch]: jus共催 第39回シェル芸勉強会リンク集 | 上田ブログ: https://b.ueda.tech/?post=20181223_shellgei_39_links
[GoogleSearch]: 【問題のみ】jus共催 第30回危念シェル芸勉強会 | 上田ブログ: https://b.ueda.tech/?post=10188
[GoogleSearch]: 昔のJavaのソース漁り - 上田ブログ: https://b.ueda.tech/?post=01344
[GoogleSearch]: 千里浜にクシクラゲがたくさんいた | 上田ブログ: https://b.ueda.tech/?post=08570
[GoogleSearch]: 日記(シェル芸フル動員のデータ集計) | 上田ブログ: https://b.ueda.tech/?post=05251
[GoogleSearch]: Raspberry Piで始めるかんたんロボット製作 | 日経Linux | 上田 ...: https://b.ueda.tech/?page=05983
...

このURLの一覧から、各PATHごとに使われているGETパラメータについてを集計する場合、以下のようにコマンドを実行すれば良い。

cat b.ueda.tech.list | sed -r 's/.+: //;s/=[^=&]+/=XXX/g' | sort -u | awk -F'?' '{url=$1;c=split($2,p,"&");for(i=0;i<=c;i++){print url": "p[i]}}' | sort -u
[blacknon@thinkpad25][~/Work/201912/20191202]
(`・ω・´)  < cat b.ueda.tech.list | sed -r 's/.+: //;s/=[^=&]+/=XXX/g' | sort -u | awk -F'?' '{url=$1;c=split($2,p,"&");for(i=0;i<=c;i++){print url": "p[i]}}' | sort -u
https://b.ueda.tech/:
https://b.ueda.tech/: page=XXX
https://b.ueda.tech/: post=XXX

URLの一覧がどこかにあれば、同じような処理をすることでGETパラメータの集計ができるだろう。