如何解决java爬虫异步加载数据
给题主两个思路供参考:
1,内置浏览器内核
内置浏览器是在爬行程序中启动一个浏览器内核,这样我们就可以得到js渲染的页面,这样我们就可以只采集静态页面了。常用的工具有三个:-Selenium-HtmlUnit-PhantomJs。
这些工具可以帮助我们解决数据异步加载的问题,但是它们都有缺陷,就是效率低,不稳定。
2.逆分析法
什么是逆向分析法?我们js渲染页面的数据是通过Ajax从后端获取的。我们只需要找到对应的Ajax请求连接,就可以得到我们需要的数据。逆向解析方法的好处是这样得到的数据都是json格式的数据,解析起来更方便。另一个好处是,相比页面,界面改变的概率更小。同样,它也有两个缺点。一个是你需要Ajax的耐心和技巧,因为你需要在一个大的推送请求中找到你想要的东西,另一个是你对JavaScript渲染的页面无能为力。