Ruby 网页抓取遇下面的问题,可以通过模拟发送请求解决吗?还是必须运行 js 才行?

xizhu2012 · 2015年02月14日 · 最后由 gyorou 回复于 2015年02月15日 · 2138 次阅读

访问网页的过程中,有个会跳转的网页,中间态的页面是下面这个内容,跳转的原理似乎是载入页面后再运行后面的那段 js,然后跳转,想问一下这样的最终的网页能抓的到吗? 例如,网址为 www.xxgs.com/showproject.aspx?fid=123456(网址是示例,关键信息已经隐去) 打开后得到下面的中间页面 ...

var bt = $("#btnRedirect"); $(window).load(function () { bt.click(); }) ... 过一会儿就跳转到 www.xxgs.com/showproject2.aspx?fid=123456 也就是说页面会由 www.xxgs.com/showproject.aspx?fid=123456 跳转到 www.xxgs.com/showproject2.aspx?fid=123456,中间过程是页面load之后,点击button进行post,post数据就是__VIEWSTATE 但是我对 www.xxgs.com/showproject.aspx?fid=123456 模拟着发送 post 请求,总是只能得到中间态的页面,这是为什么呢? 另外,一旦涉及到 https 的操作,例如: http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true if uri.scheme == "https" # enable SSL/TLS http.verify_mode = OpenSSL::SSL::VERIFY_NONE 这样的话,连接网站就会出现 SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (Faraday::SSLError) 的错误. 折腾了好久,不知道到底问题出在哪儿,希望有人能指点一下,多谢!

post 之后 sleep 几秒再读取不就好了……

需要 登录 后方可回复, 如果你还没有账号请 注册新账号