Answers
简单说吧,
prerender
是在服务器端放置了一个JavaScript engine。
当服务器收到一个请求,譬如:
http://www.suibianba.com/news
,你的单页应用返回一个几乎为空的HTML给客户端,然后由浏览器再对
/news
部分做前端路由,把数据动态填到
DOM
里。
那如果该请求是爬虫发来的,返回空显然不合适,所以我们有了
prerender
服务,它拿到请求够,直接在服务端的一个js engine里,运行这个HTML(就像浏览器做的那样),直到内容动态填完之后,再广播一个事件告诉
phantomjs
“内容已经好了,可以返回给爬虫了”,这样爬虫就拿到了一份完整的HTML,就和在浏览器里渲染完的一样
哔哩哔哩爱尾行
answered 9 years, 8 months ago