Ruby
Webスクレイピングのやり方[Ruby Mechanize]
ヤス
更新日:2021/08/12
こんにちわ。ヤスです。
以前にも別の記事で取り上げていたWebスクレイピング。
GoutteでWebスクレイピング
https://b3s.be-s.co.jp/programming-language/php/262/
PHPに限らず他の言語でも便利なライブラリがありましたので、ご紹介。
Ruby Mechanize
「Ruby Mechanize」は、Rubyで書かれたWebスクレイピングのライブラリで、シンプルなメソッドで色々できます。
とりあえずやってみた
上司からとあるソフトウェアの更新があるかを確認しろ指示されたMくん。
毎日確認するのが面倒くさいMくんは、更新があればメールをくれるプログラムを書いてみました。。
※Ruby初心者なので優しい目でお願い致します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# ライブラリ require 'mail' require 'mechanize' # インスタンス生成 agent = Mechanize.new # user_agentも詐欺れるよ agent.user_agent_alias = 'Mac Safari 4' # とあるURLをスクレイピング url = 'http://hogehoge' page = agent.get(url) # Xpath方式でDOMをgrepして、バージョン名をGet get_text = page.search('//a[@class="hogehoge"]')[0].text # 以前に取得したバージョン local_text = nil if File.exist?('version.txt') then file = File.open('version.txt') local_text = file.read file.close end # 今回取得したバージョンをファイルに書き込み file = File.open('version.txt', "w") file.print(get_text) file.close # バージョンに相違があれば、メールを送る if get_text == local_text then puts "更新なし" else puts "更新あり" mail = Mail.new do from 'hogehoge@hogehoge' to 'hogehoge@hogehoge' subject 'Updateがあるよ' body 'Download してね' end mail.delivery_method(:smtp, address: "hogehoge", port: hogehoge, domain: "hogehoge", authentication: :login, user_name: "hogehoge", password: "hogehoge" ) mail.deliver end |
参考ページ
https://www.xmisao.com/2013/10/05/ruby-www-mechanize.html
https://www.xmisao.com/2014/04/02/ruby-www-mechanize-2.html
https://qiita.com/shizuma/items/d04facaa732f606f00ff
https://qiita.com/meguroman/items/6d2520ec83ffa4dfc0c7