抓取ajax动态网页java(爬取苏宁酷开电视价格代码如下:(导入jsoup包) )
优采云 发布时间: 2022-03-14 14:04抓取ajax动态网页java(爬取苏宁酷开电视价格代码如下:(导入jsoup包)
)
最近因为工作需要,开始学习爬虫。对于静态加载的页面,爬取并不难,但是遇到ajax动态加载的页面,动态加载的信息是爬不出来的!
对于ajax动态加载的数据爬取,一般有两种方式:
1.因为js渲染页面的数据也是从后端获取的,而且基本上都是AJAX获取的,所以分析AJAX请求,找到对应的数据
请求也更可行。而且相对于页面样式,这个界面是不太可能改变的。缺点是找到请求,并且
仿真是一个比较困难的过程,需要比较多的分析经验
2.在爬取阶段,爬虫内置浏览器内核,爬取前执行js渲染页面。这方面对应的工具有Selenium,
HtmlUnit 或 PhantomJs。但这些工具都存在一定的效率问题,同时也不是那么稳定。好处是写规则
对于第二种方法,我测试过,只有Selenium可以成功爬到ajax动态加载的页面,但是每次请求页面都会弹出浏览器窗口,这对后面的项目部署到浏览器很不利!所以推荐第一种方法,代码也是第一种方法。
爬取苏宁酷开电视价格代码如下:
(导入jsoup包我就不多说了,自己百度吧!)
//然后就是模拟ajax请求,当然了,根据规律,需要将"datasku"的属性值替换下面链接中的"133537397"和"0000000000"值
Document
document1=Jsoup.connect("http://ds.suning.cn/ds/generalForTile/000000000133537397-9173-2-0000000000-1--ds000000000.jsonp")
.ignoreContentType(true)
.data("query", "Java")
.userAgent("Mozilla")
.cookie("auth", "token")
.timeout(3000)
.get();
//打印出模拟ajax请求返回的数据,一个json格式的数据,对它进行解析就可以了
System.out.println(document1.text());