意外と簡単!プログラミングはこうして学ぶ 現役エンジニアの面倒を一気に解決する技術

著者フォロー
ブックマーク

記事をマイページに保存
できます。
無料会員登録はこちら
はこちら

印刷ページの表示はログインが必要です。

無料会員登録はこちら

はこちら

縮小

次はもう少し複雑な、私の近くで生じた課題を少しアレンジしたものを題材にしてみます。

やりたいことは以下のとおりです。

・ある複数のWebページに、自社製品についての言及があるかどうかを調べたい
・言及があったらそのページを人間が目で見て調査するので、言及の有無だけわかればいい
・候補となるページのURLはテキストファイルに1行 = 1URLとして書かれている

さて、こういう作業は、どのような手順で行うでしょうか? ひとつひとつ追ってみましょう。

・URLが書いてあるテキストファイルを開く
・1行分のURLをコピーする
・ブラウザを立ち上げ、コピーしたURLをペーストしてWebサイトを表示する
・表示されたWebサイトに自社製品についての言及があるかを確認する
・言及があればそのURLを別のテキストファイルにペーストしておく

同じことを繰り返すときはコンピュータの出番

これを繰り返すことで、最終的には「言及があるWebサイトのURLが書かれたテキストファイル」ができそうですね。しかし、「複数のWebサイト」が4500件あったとしても、この手順でやりますか?

根性で4500回やってもいいかもしれませんが、こういうときこそコンピュータの出番です。ここでは、普段使っているRubyという言語を使ったサンプルをお見せします。

require 'net/http'
File.foreach('./url.txt') do |line|
url = line.chomp
response = Net::HTTP.get(URI.parse(url))
puts url if response.include?('keyword')
end

 

●プログラムの解説
・require 'net/http':Webページを取得するライブラリを使うことを宣言します
・File.foreach('./url.txt') do |line|:`url.txt` というファイルを1行ずつ読み込み、 `line` という変数に格納して処理します
・url = line.chomp:変数 `line`に格納されたURL文字列から前後の改行を取り除き、 `url` という変数に格納します
・response = Net::HTTP.get(URI.parse(url)):URLとして指定されたWebページを取得し、 内容を `response` という変数に格納します
・puts url if response.include?('keyword'):もしWebページの中身に `keyword` という単語が含まれていたらそのURLを表示します
・end:ここまで繰り返し

これだけのコードで、同じフォルダにある url.txt というファイルを読み込み、1行ずつページの内容を取得し、そこに keyword という文字が含まれていたらそのURLを出力する、という作業が完了します。

プログラムに仕事をさせるもう1つの利点は、「再利用性が高い」ことです。たとえばこの仕事だと、URLがもう100件追加になった! とか、キーワードを増やしたい! など、いろんな要望が後出しでやってくることが想像できます。

人間が手で作業しているところにそんなリクエストが来たらいろいろと大変なことになりますが、プログラムは繰り返し作業をさせてもなんの文句も言いません。少し修正して実行すれば、作業はあっという間に終了します。

次ページSQLによるデータ集計
関連記事
トピックボードAD
キャリア・教育の人気記事