意外と簡単!プログラミングはこうして学ぶ

現役エンジニアの面倒を一気に解決する技術

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

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

・ある複数の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
関連記事
  • 中原圭介の未来予想図
  • ココが違う!結果びと
  • Amazon週間ビジネス・経済書ランキング
  • 令和の新教養
トレンドライブラリーAD
  • コメント
  • facebook
0/400

コメント投稿に関する規則(ガイドライン)を遵守し、内容に責任をもってご投稿ください。

アクセスランキング
  • 1時間
  • 24時間
  • 週間
  • 月間
  • シェア
トレンドウォッチAD
好業績の裏で検査不正<br>スズキ「鈴木修経営」の光と影

5月10日の決算会見に登壇し完成検査の不正を詫びたスズキの鈴木修会長。不正は組織的・構造的な問題か、現場への目配り不足によるのか。長年にわたるカリスマ経営の副作用を指摘せざるをえない同社のガバナンス体制を詳解する。