2017-05-23 7 views
0
require 'rubygems' 
require 'nokogiri' 
require 'mechanize' 

agent = Mechanize.new 

page = agent.get('https://www.instagram.com/accounts/login/') 
forms = page.forms.first 
pp form 

私は、InstagramのWebサイトにログインするためにフォームを探しています。私はページ上の唯一のものであるにもかかわらず、機械化してフォームを見つけることができないようです。私はかなりページを印刷するときに私は空白の出力を取得します。ルビでMechanizeを使用したフォームの検索

答えて

1

このページではJavascriptを使用してフォームをレンダリングしますが、機械化は実行されません。 Javascriptなしでページがどのように見えるかを見たい場合は、lynxブラウザで開くことができます。

セレンを代わりに使用できます。 (hereを参照)など、クロム用としてドライバをインストールした後、APIはかなり似ています

driver = Selenium::WebDriver.for :chrome 
driver.navigate.to "https://www.instagram.com/accounts/login/" 
first_form = driver.find_elements(css: "form")[0] 
+0

私が認証するために、セレンwebdriverをを使用している場合は、私を維持しながら、私は、サーバーへの更なる要求を送信し、それらを解析する鋸山使用することができますログインセッション?スクラップにマルチスレッドのアプローチを使用しようとしています。 –

+0

@BenGitter GUIなしで 'headless' gemを使って実行できますが、メインスレッドをブロックしないようにスレッドにラップすることもできます(https://stackoverflow.com/questions/30808606/)。 can-selenium-use-multi-threading-in-one-browser)ドライバはスレッドセーフではないので、並列テストを実行するために_複数のドライバ_を起動することをお勧めします。自分で使ったことはありませんが、[Selenium Grid](http://www.seleniumhq.org/docs/07_selenium_grid.jsp)は有望なツールのようです。 –

関連する問題