现在很多项目都是前后端分离的,这会使得数据异步加载问题更加突出。出现这类问题时不必慌张,总体来说,有两种解决办法。和神龙IP一起来看看吧~
爬虫遇上数据异步加载,试试这两种办法!
一、内置一个浏览器内核
内置浏览器就是在抓取的程序中,启动一个浏览器内核,使我们获取到 js 渲染后的页面,这样我们就跟采集静态页面一样了。
这种工具常用的有以下三种:Selenium、HtmlUnit、PhantomJs
这些工具都能帮助我们解决数据异步加载的问题,但是他们都存在缺陷,那就是效率不高而且不稳定。
二、反向解析法
什么是反向解析法呢?我们 js 渲染页面的数据是通过 Ajax 的方式从后端获取的,我们只需要找到对应的 Ajax 请求连接就 OK,这样就可获取到我们需要的数据。反向解析法的好处,一是获取的数据都是 json 格式的,解析起来比较方便;二是是相对页面来说,接口的变化概率更小。
同样,它有两个不足之处,在 Ajax 时你需要有耐心有技巧,因为你需要在一大堆请求中找到你想要的;而面对 JavaScript 渲染的页面,反向解析法只能束手无策。
以上就是异步数据加载的两种解决办法,大家要根据具体情况进行选择。对于一些使用 JavaScript 片段渲染的页面,内置浏览器更加靠谱。对于其他情况来说使用反向解析法更好,因为它的性能和稳定是都要比内置浏览器内核靠谱。
领取专属 10元无门槛券
私享最新 技术干货