Ruby - ウェブスクレイピング - リンク切れをチェック 1ページ
- 1. 概要
- 2. インストール
- 3. ファイル
- 4. ソース
1. 概要
id を記述しているタグが複数あるので。
id の記述を行っているタグを ini ファイルで指定できるようにしようと思ったのです。
本項は「Python や Rubyでの INI ファイルの参照」を参考にさせていただきました。
2. インストール
inifile というモジュールが必要なようです。
gem でインストールするには
プロンプト略
gem install inifile
FreeBSD の ports でインストールするには root ユーザで
プロンプト略
cd /usr/ports/textproc/rubygem-inifile
make
make install
3. ファイル
ファイルを
~/.linkcheck
としたかったのですが。
先頭の
#!/usr/bin/env ruby
のためかホームディレクトリの定義がなくなっているようなので、当面、ソースディレクトリと同じディレクトリに配置することにしました。
まず「<a href="#なんとか">」と記述しているリンク先を探すために
[tag]
id=
と記述して、id の箇所にスペースで区切って、id を定義しているタグを記述することにしました。
事情があって、チェックしたくないリンク先があって
[link]
nocheck=URI
の形式で記述して、これもスペースで区切って列挙できるようにしました。
4. ソース
本番のソースは別途掲載しました。
サンプルとして
#!/usr/bin/env ruby
require('inifile')
inifile = IniFile.load('.linkcheck')
puts("全有効行")
puts("#{inifile}")
puts("\n分類")
inifile.each do | key, value |
puts('key = ['"#{key}"'] value = ['"#{value}"']')
end
puts("\n[:tag] を見る")
puts('inifile[:tag]'"#{inifile[:tag]}")
puts("\n[:output] を見る")
puts('inifile[:output]'"#{inifile[:output]}")
というソースを書き、「ini」ファイルとして下記を読みこませて
[/home/kitayama/lang/ruby/sample/.linkcheck] というファイルが、なかったですじゃ・・・。
実行すると下記のような結果が得られます。
> ./ソースファイル名.rb
全有効行
[tag]
id = h4 h5 a div span
[link]
nocheck = https://px.a8.net/ https://go.microsoft.com/fwlink/
[output]
filename = linkchecker-out.html
silent =
分類
key = [tag] value = [id]
key = [link] value = [nocheck]
key = [output] value = [filename]
key = [output] value = [silent]
[:tag] を見る
inifile[:tag]{"id"=>"h4 h5 a div span"}
[:output] を見る
inifile[:output]{"filename"=>"linkchecker-out.html", "silent"=>nil}
つまり、セクション名をキーとしたハッシュからアイテム名をキーとしたハッシュを作成しているってことでしょうか。
よくできているのは、先頭が「#」の行は読み飛ばしてくれているところです。
|
|