ページ

2016年4月3日日曜日

MechanizeでWeb操作 1 - 動作確認 -


Mechanizeとは?
Webページの操作を自動化できたりするrubyのgem
公式ページ
以前Seleniumを紹介しましたが、Seleniumと異なる点は
Seleniumはブラウザを起動して実際に操作しましたが、
Mechanizeは内部でエミュレートします。
実際に動作させてみたいと思います。

インストール


gemをインストールします
  • Gemfile
source "https://rubygems.org"
gem "mechanize"
$ bundle install --path vendor/bundle


軽く動かしてみる


早速試しに、このホームページのトップページの情報を取得して
コンソールに出力させてみます
require 'mechanize'

agent = Mechanize.new
page = agent.get('http://developabout0309.blogspot.jp')
puts page.body
↑をmain.rbとして保存し
$ bundle exec ruby main.rb
で実行します。
成功すればずらずらっとhtmlが出力されます。
Mechanizeを使用する場合まずエージェント(Mechanizeのインスタンス)を
作成する必要があります。Mechanize.new
作成したエージェントのgetメソッドを使ってURLのページの情報を取得します

画像一覧を取得し保存


次は少し実用的に・・・ページの画像ファイルの保存方法です
と言ってもMechanizeだと結構簡単に出来ます。
main.rbを以下のように修正
require 'mechanize'

agent = Mechanize.new
page = agent.get('http://sample')
page.images_with(:src => /jpeg|png|gif/).each do |img|
  img.fetch.save
end
http://sampleに保存したいページのURLを設定して実行すれば、
カレントディレクトリに画像ファイルが出力されているかと思います

フォーム入力


フォームの入力、サブミットまでを、
yahooでmechanizeのワードで検索して、結果を出力してみたいと思います。
require 'mechanize'

agent = Mechanize.new
page = agent.get('http://www.yahoo.co.jp')
form = page.form_with(:name => 'sf1') do |search|
 search.p = 'mechanize'
end
result = form.submit
result.links.each do |link|
   puts link.text
end
  • 出力結果
$ bundle exec ruby main.rb
Yahoo! JAPAN
検索設定
この検索結果ページについて
楽々スクレイピング! Ruby Mechanizeの使い方 -- ぺけみさお
GitHub - sparklemotion/mechanize: Mechanize is a ruby library that ...
Rails スクレイピング手法 Mechanizeの使い方 - Qiita
RubyのMechanizeとNokogiriで読書メーターをスクレイピング - Qiita
Mechanize について - 君の瞳はまるでルビー - Ruby 関連まとめサイト
RubyでWebを操作できるMechanizeの利用例を集めてみた | Scimpr Blog
Mechanizeによるスクレイピングの基本的なことまとめ - そのねこが学ぶとき
1時間の作業を自動化して1分でやろう! MechanizeとNokogiriで ...
mechanize | RubyGems.org | your community gem host
Class: Mechanize — Documentation for mechanize (2.7.4)
mechanize とは
mechanize IE
mechanize Ruby
fear FACTORY mechanize
www::mechanize
python+mechanize
2
3
4
5
6
7
8
9
10
次へ »
検索設定
この検索結果ページについて
実際にyahooで検索した結果がこちら

余計なリンクまで入ってますが^^;、検索結果の一覧が取得できているかと思います。

0 件のコメント:

コメントを投稿