单击 javascript 选项卡使用 mechanize 和 ruby
Click javascript tab using mechanize and ruby
我正在使用 mechanize,ruby 和 ruby & rails 来抓取这个 website 。
我想单击 "Trabajo En Sala" 选项卡,以便我可以抓取该选项卡中的任何信息。
我知道 mechanize 不支持 javascript,但我读到了 here 这家伙是如何使用 mechanize 来处理 javascript 响应的。我注意到一件事,我或多或少有同样的问题,可能会像他一样使用相同的解决方案。原因是:
1) 选项卡 href 使用相同的 __doPostBack() 函数
<a id="ctl00_mainPlaceHolder_btnSala" href="javascript:__doPostBack('ctl00$mainPlaceHolder$btnSala','')">Trabajo en sala</a>
2) 看源码的时候可以清楚的看到javascript[=51=相关的表格] 函数:
所以我读了那个人写的 post 并试图将他的解决方案修改为我的。这就是我到目前为止得到的:
require 'mechanize'
task :scraper_test => [:environment] do
agent = Mechanize.new
page = agent.get("https://www.camara.cl/camara/diputado_detalle.aspx?prmid=968")
form = page.form("aspnetForm.add_field!('__EVENTTARGET','')")
form.add_field!('ctl00$mainPlaceHolder$btnSala','')
tab = agent.submit(form)
end
p/s:我在 rails 应用程序中使用 rake 来 运行 这个。
但是当我 运行 它时,我得到了这个错误:
NoMethodError: undefined method `add_field!' for nil:NilClass
那么,你能帮我找出正确的方法吗?谢谢!
我只是 运行 在我的控制台中使用了这个,而你收到了这个错误
NoMethodError: undefined method `add_field!' for nil:NilClass
因为这一行returns nil
form = page.form("aspnetForm.add_field!('__EVENTTARGET','')")
将其更改为此,它将修复当前的错误。
form = page.form("aspnetForm")
我正在使用 mechanize,ruby 和 ruby & rails 来抓取这个 website 。 我想单击 "Trabajo En Sala" 选项卡,以便我可以抓取该选项卡中的任何信息。
我知道 mechanize 不支持 javascript,但我读到了 here 这家伙是如何使用 mechanize 来处理 javascript 响应的。我注意到一件事,我或多或少有同样的问题,可能会像他一样使用相同的解决方案。原因是:
1) 选项卡 href 使用相同的 __doPostBack() 函数
<a id="ctl00_mainPlaceHolder_btnSala" href="javascript:__doPostBack('ctl00$mainPlaceHolder$btnSala','')">Trabajo en sala</a>
2) 看源码的时候可以清楚的看到javascript[=51=相关的表格] 函数:
所以我读了那个人写的 post 并试图将他的解决方案修改为我的。这就是我到目前为止得到的:
require 'mechanize'
task :scraper_test => [:environment] do
agent = Mechanize.new
page = agent.get("https://www.camara.cl/camara/diputado_detalle.aspx?prmid=968")
form = page.form("aspnetForm.add_field!('__EVENTTARGET','')")
form.add_field!('ctl00$mainPlaceHolder$btnSala','')
tab = agent.submit(form)
end
p/s:我在 rails 应用程序中使用 rake 来 运行 这个。
但是当我 运行 它时,我得到了这个错误:
NoMethodError: undefined method `add_field!' for nil:NilClass
那么,你能帮我找出正确的方法吗?谢谢!
我只是 运行 在我的控制台中使用了这个,而你收到了这个错误
NoMethodError: undefined method `add_field!' for nil:NilClass
因为这一行returns nil
form = page.form("aspnetForm.add_field!('__EVENTTARGET','')")
将其更改为此,它将修复当前的错误。
form = page.form("aspnetForm")