htmlunit抓取动态网页(爬取苏宁酷开电视价格代码如下:(导入jsoup包) )

优采云 发布时间: 2021-12-17 05:02

  htmlunit抓取动态网页(爬取苏宁酷开电视价格代码如下:(导入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());

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线