#author("2020-09-30T03:36:23+09:00","default:nobuoki","nobuoki")
#author("2020-09-30T03:37:04+09:00","default:nobuoki","nobuoki")
* はじめに [#g4bf8f21]

[[コミュニティ放送局一覧 - Wikipedia>https://ja.wikipedia.org/wiki/%E3%82%B3%E3%83%9F%E3%83%A5%E3%83%8B%E3%83%86%E3%82%A3%E6%94%BE%E9%80%81%E5%B1%80%E4%B8%80%E8%A6%A7]]を使って
コールサイン一覧をスクレイピングしてみるテスト

#pre{{{
JOZZ1AA-FM  FMいるか
JOZZ1AB-FM  旭川シティネットワーク
JOZZ1AC-FM  エフエムくしろ
JOZZ1AD-FM  おびひろ市民ラジオ
JOZZ1AE-FM  エフエムおびひろ
(略)
JOZZ0CL-FM  あいらFM
JOZZ0CM-FM  天草ケーブルネットワーク
JOZZ0CN-FM  FMしまじり
JOZZ0CO-FM  南笑事
JOZZ0CP-FM  つなぐほーむ
}}}

こういうのを作成します

* 回答例 [#w1fd16b3]

curl -sL 'https://bit.ly/2S6SdSw' | nkf -wLux --numchar-input | sed 's;<br />;_BR_;g' | grep -oE '<[^>]+>[^<]+<[^>]+>' | grep -vE '\[[0-9]+\]' | grep -B1 JOZZ | sed 's/<[^>]*>//g' | sed -n '1~3h;2~3{x;H;x;s/\n/,/;p}' | column -ts,


* 解説 [#k5035a1e]

#prism(bash){{{
# コミュニティFM局のコールサイン
curl -sL 'https://bit.ly/2S6SdSw' | nkf -wLux --numchar-input | sed 's;<br />;_BR_;g' | grep -oE '<[^>]+>[^<]+<[^>]+>' | grep -vE '\[[0-9]+\]' | grep -B1 JOZZ | sed 's/<[^>]*>//g' | sed -n '1~3h;2~3{x;H;x;s/\n/,/;p}' | column -ts,

# https://bit.ly/2S6SdSw -(redirect)-> Wikipedia
curl -sL 'https://bit.ly/2S6SdSw'                                          | \
# 数値参照の変換(と、念の為のUTF-8変換)
nkf --numchar-input -wLux                                                  | \
# 念の為 <br /> タグを退避
sed 's;<br />;_BR_;g'                                                      | \
# <タグ>値</タグ> を抽出
grep -oE '<[^>]+>[^<]+<[^>]+>'                                             | \
# 脚注を除外
grep -vE '\[[0-9]+\]'                                                      | \
# コールサインの行と、その1つ前の行を抽出
grep -B1 JOZZ                                                              | \
# タグ外し
sed 's/<[^>]*>//g'                                                         | \
# 1行目(放送局名)と2行目(コールサイン)を入れ替えてカンマ区切りで結合
sed -n '1~3h;2~3{x;H;x;s/\n/,/;p}'                                         | \
# 整形
column -ts,
}}}

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS