如何爬取网页中js动态生成的数据

如何爬取网页中js动态生成的数据,第1张

String url = "http://xinjinqiao.tprtc.com/admin/main/flrpro.do"

try {

    WebClient webClient = new WebClient(BrowserVersion.FIREFOX_10)

    //设置webClient的相关参数

    webClient.getOptions().setJavaScriptEnabled(true)

    webClient.getOptions().setCssEnabled(false)

    webClient.setAjaxController(new NicelyResynchronizingAjaxController())

    //webClient.getOptions().setTimeout(50000)

    webClient.getOptions().setThrowExceptionOnScriptError(false)

    //模拟浏览器打开一个目标网址

    HtmlPage rootPage = webClient.getPage(url)

    System.out.println("为了获取js执行的数据 线程开始沉睡等待")

    Thread.sleep(3000)//主要是这个线程的等待 因为js加载也是需要时间的

    System.out.println("线程结束沉睡")

    String html = rootPage.asText()

    System.out.println(html)

} catch (Exception e) {

}

抓取动态页面有两种常用的方法,一是通过JavaScript逆向工程获取动态数据接口(真实的访问路径),另一种是利用selenium库模拟真实浏览器,获取JavaScript渲染后的内容。但selenium库用起来比较繁琐,抓取速度相对较慢,所以第一种方法日常使用较多。

1、JS获取表格的简便方法:获取tbody:tBodies 获取thead:tHead 获取tfoot:tFoot 获取行tr:rows 获取列td:cells

使用实例: oTable.tBodies[0] oTable.tHead[0] oTable.tFoot[0] oTable.rows[1] oTable.cells[1]

2、遍历

var oTable=document.getElementById("表格id")

oTable.tBodies[0]可以看成是rows和cells组成的二维数组,用两个for循环嵌套遍历一下就可以了


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/391829.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-18
下一篇2023-05-18

发表评论

登录后才能评论

评论列表(0条)

    保存