1

テスト、Web ページのデータ入力を自動化する方法を探しています。また、Web ページのデータを抽出してデータベースに永続的に保存したいと考えていました。Rubyを使用してそのような要件を満たす方法はありますか? もしそうなら、どのRubyモジュールが私に役立つか教えてください。

4

3 に答える 3

1

まず、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"

終わり

于 2013-01-09T13:40:33.290 に答える
1

はい、Ruby といくつかの gem を使用して、このすべてのタスクを実行できます。データ抽出について は、 https
://github.com/sparklemotion/nokogiri をご覧 になることをお勧めします。 また、フォームなどのテストと自動化については、https ://github.com/jnicklas/capybara をご覧ください。Nokogiri gem
Capybara gem

PS: Capybar gem はこれだけではありませんが、あなたのケースにも適用できます。

于 2013-01-09T12:45:38.803 に答える
1

一部の 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 エンジンを書くことを除けば。

編集: あなたが正確に何をしたいのかを伝えることができれば、私はあなたにいくつかの一致する宝石を提案するかもしれません. 通常、「それには宝石があります」は良いことわざです。必要なキーワードについて ruby​​gems.org を参照するか、https: //www.ruby-toolbox.com/ を参照して、問題に対する分類/ランク付けされた提案を確認してください。:)

EDIT 2: http://watir.com/ を見て、 少し簡単なスクリプトで試してみて、それが解決策であるかどうかを感じてみてください。

Watir は、人と同じようにブラウザーを動かします。リンクをクリックし、フォームに入力し、ボタンを押します。Watir は、予想されるテキストがページに表示されるかどうかなどの結果もチェックします。

すべてをクリックしたら、XML パーサー (nokogiri が適しています) または正規表現を使用して、Web ページから結果 (または必要なもの) をスクレイピングします。

次に、データベースにデータを詰め込みます。これには Activerecord が思い浮かびますが、やり過ぎかもしれませんし、そうでないかもしれません。データベースに応じて、好きなアダプター/接続 gem を選択します (繰り返しますが、たくさんあります)。

これを 1 時間ごとなどに実行したい場合は、when ジェム (cron ジョブを管理します) を使用するか、必要に応じて sleep(x) を含む無限ループを記述します。それを行う方法は複数あります。:)

于 2013-01-09T12:55:40.343 に答える