テスト、Web ページのデータ入力を自動化する方法を探しています。また、Web ページのデータを抽出してデータベースに永続的に保存したいと考えていました。Rubyを使用してそのような要件を満たす方法はありますか? もしそうなら、どのRubyモジュールが私に役立つか教えてください。
3 に答える
まず、Linux、BSD、または MacOS のいずれかを使用する適切なオペレーティング システムが必要です。
Windows は一部の人には適していますが、Ruby 開発者であるあなたには適していません。C 拡張機能が必要なライブラリが多すぎて、cygwin でコンパイルするのは面倒です。
Ruby バージョン マネージャーをインストールすることをお勧めします。これにより、さまざまな Ruby バージョンを試すことができます。Ruby バージョン マネージャーである RVM をお勧めします。
現在標準となっている Ruby 1.9.3 をインストールします。
rubygems を介して gem mechanize をインストールすると、必要な Web サイトのほぼすべての自動化が行われます。Perl の LWP::Mechanize の後継です。
Nokogiri は、(X)HTML のような XML データの解析にも役立ちますが、以前の libxml ライブラリがシステムにインストールされている必要があることに注意してください。
ああ、あなたの質問によると:
はい、Ruby を使用して Web サイトを読むことができます。たとえば、次の Web ページを読んでください。
http = HTTPClient.new
http.get "http://stackoverflow.com/questions/14235393/can-i-read-webpage-data-using-ruby"
終わり
はい、Ruby といくつかの gem を使用して、このすべてのタスクを実行できます。データ抽出について
は、 https
://github.com/sparklemotion/nokogiri をご覧
になることをお勧めします。
また、フォームなどのテストと自動化については、https ://github.com/jnicklas/capybara をご覧ください。Nokogiri gem
Capybara gem
PS: Capybar gem はこれだけではありませんが、あなたのケースにも適用できます。
一部の Web ページは有効な XML ではない可能性があるため、正規表現を使用して Web ページから必要なデータを取得することもできます。XMLReader アプローチが失敗することがあります。
サンプル:
require 'open-uri'
page_content = open("http://your_page.com").read
page_body = page_content.scan(/<body>(.*)<\/body>/i).first
# do whatever you want with it
VBSloverが言ったように、カピバラはブラウジング関連のものを扱うのに便利です.
n 分ごとなどの自動化された方法でこれを行うことも、everyone gem を使用して可能です。
Database-Storing を処理するために、非常に優れた gem がたくさんあります。
最終的な答え: 現在、Ruby でできないことは何もありません。わかりました、たぶん、本当に (!) 高性能なコード / 3D エンジンを書くことを除けば。
編集: あなたが正確に何をしたいのかを伝えることができれば、私はあなたにいくつかの一致する宝石を提案するかもしれません. 通常、「それには宝石があります」は良いことわざです。必要なキーワードについて rubygems.org を参照するか、https: //www.ruby-toolbox.com/ を参照して、問題に対する分類/ランク付けされた提案を確認してください。:)
EDIT 2: http://watir.com/ を見て、 少し簡単なスクリプトで試してみて、それが解決策であるかどうかを感じてみてください。
Watir は、人と同じようにブラウザーを動かします。リンクをクリックし、フォームに入力し、ボタンを押します。Watir は、予想されるテキストがページに表示されるかどうかなどの結果もチェックします。
すべてをクリックしたら、XML パーサー (nokogiri が適しています) または正規表現を使用して、Web ページから結果 (または必要なもの) をスクレイピングします。
次に、データベースにデータを詰め込みます。これには Activerecord が思い浮かびますが、やり過ぎかもしれませんし、そうでないかもしれません。データベースに応じて、好きなアダプター/接続 gem を選択します (繰り返しますが、たくさんあります)。
これを 1 時間ごとなどに実行したい場合は、when ジェム (cron ジョブを管理します) を使用するか、必要に応じて sleep(x) を含む無限ループを記述します。それを行う方法は複数あります。:)