【发布时间】:2016-01-04 01:07:05
【问题描述】:
我正在使用 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 __doPostBack函数相关的表单:
所以我已经阅读了那个人写的帖子,并试图将他的解决方案修改为我的。这就是我到目前为止得到的:
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
那么,您能帮我找出正确的方法吗?谢谢!
【问题讨论】:
标签: javascript ruby-on-rails ruby ruby-on-rails-4 mechanize