私は掻き出したいウェブサイト(FWIWはsvpplyです)があり、「すべて表示」と表示されるボタンがあります。これはHTML <button>
要素です。 Rubyを使ってこのボタンをエミュレートし、そのボタンがクリックされた後に表示される全ページの内容を取得する方法はありますか?Ruby内で<button>をエミュレートするRuby
0
A
答えて
1
「すべて表示」ボタンは、JavaScriptのajaxリクエストをトリガーします。それを自動化する唯一の方法は、javascriptを実行できるライブラリを使用することです。 MechanizeやScrAPIなどのライブラリは動作しません。
watirやセレンのような実際のブラウザを駆動するツールが有効です。 watir-webドライバをインストールし、ボタンをクリックして追加の製品を表示することに成功しました。
require 'watir-webdriver'
b = Watir::Browser.new
b.goto 'svpply.com/editors_pick'
#count products
puts b.elements(:xpath => '//li[@data-class="Product"]').count
#=> 30
#Now click button
show_all = b.button(:id => "btn_all")
show_all.click
sleep 4
#count products again
puts b.elements(:xpath => '//li[@data-class="Product"]').count
#=>60
0
ボタンを押したときにページがリロードされた場合は、そうでなければJavaScriptを解析できるものが必要です。ボタンを押した後にウェブサイトがリダイレクトされる場所を理解していれば(同じページであっても、いくつかのパラメータが設定されている場合は、この目的のためにfirebugを使用してください)、最終的に必要なものを読むことができます。
1
関連する問題
- 1. RubyでCtrl + Cをエミュレートするには?
- 2. Rubyのクラス<<自己
- 3. Rubyのプット<< PARAGRAPH
- 4. Ruby:<< - 演算子
- 5. << Rubyの意味
- 6. Ruby on Rails:<< self
- 7. Rubyのattr_readerは、<<
- 8. Foo <Rubyのバー
- 9. #<Enumerator:0x007fcb41399a90> Ruby
- 10. Ruby内からRubyソースファイルを生成/変更する
- 11. rubyコンパイルRubyをコンパイルする
- 12. rubyスクリプト内でgitを実行する
- 13. RubyやRubyのRubyでカウンタを使用するには
- 14. モデル内のRubyメタプログラミング
- 15. ruby enterpriseとRails <3 app
- 16. メソッド内でメソッドを呼び出すruby
- 17. Rubyの解説<<演算子
- 18. ファイル内の行を削除する - Ruby
- 19. ruby on rubyでのmysqlエラーメッセージ
- 20. ruby 1.8.7とruby 1.9.2をインストールする
- 21. urllib2 in ruby ruby
- 22. Rubyでは "<< - "とは何ですか?たとえば
- 23. index.html.erbファイル内のスクリプトタグ内でRubyハッシュを解析する
- 24. Rubyでオーバーロードする
- 25. ruby 1.8から1.9 ruby -v ruby 1.9.2p0
- 26. HadoopでRuby reducersを並列化する? Rubyで
- 27. Rubyでオブジェクトを解凍する方法は? Rubyで
- 28. ruby-libmspack gemでrubyで.cabを作成するには
- 29. ループ内のRuby例外
- 30. Ruby:数量内の収量
ボタンの機能によって異なります。それはJavaScriptを実行しますか?フォーム内にある場合は、フォームのアクションを共有します。 – FakeRainBrigand