htmlunit抓取动态网页(htmlunit网络工具一个没有没有 )
优采云 发布时间: 2021-10-14 16:21htmlunit抓取动态网页(htmlunit网络工具一个没有没有
)
1:背景
我想用jsoup抓取一个页面,但是我抓取的数据总是不完整的,然后我发现页面执行了js之后有一些数据渲染在页面上,也就是说,它只在执行js后的数据页。数据会显示出来,但是jsoup无法实现执行页面的js。
2:解决
搜索后发现htmlunit网络工具可以执行js,相当于没有页面的浏览器。解决办法是先用htmlUnit发送网络请求,执行js获取页面,然后用jsoup转换成Document页面对象。然后用jsoup分析页面读取数据。
3: htmlUnit 发送请求
4:返回的Document对象交给jsoup处理
我这里只做了一个简单的输出,我检查了数据是否全部渲染完毕。
1 Document doc=getDocument();
2 Element table=doc.select("table.table.table-bordered.aggregate_table").get(0);//获取到表格
3 Element tableContext=table.getElementsByTag("tbody").get(0);
4 Elements contextTrs=tableContext.getElementsByTag("tr");
5 System.out.println(contextTrs.size());
6
7
8 String context=doc.toString();
9 OutputStreamWriter pw = null;
10 pw = new OutputStreamWriter(new FileOutputStream("D:/test.txt"),"GBK");
11 pw.write(context);
12 pw.close();