htmlunit抓取动态网页(Java端得到的HTML文件里面没有某一段代码怎么做 )

优采云 发布时间: 2021-12-17 04:37

  htmlunit抓取动态网页(Java端得到的HTML文件里面没有某一段代码怎么做

)

  我最近一直在抓取数据。抓取一般网页数据相对容易。今天在抓取电视猫的节目列表,发现有些数据无法抓取。Java端获取到的HTML文件不收录某段代码。我查了很多资料。,我发现是js动态生成的数据,不能直接抓取。一种解决办法是找到ajax请求地址和参数,重新爬取。这个方法有一个问题,就是当参数加密过时,这个方法不好用,所以,这里有一个方法,就是用HTMLunit来抓取(可以用jsuop处理HTML文件),jar包下载地址:(HTMLunit使用的jar包全部导入后,稍微调整一下,

  public static String getHtml(String url){

// 模拟一个浏览器

@SuppressWarnings("resource")

WebClient webClient = new WebClient();

//webclient参数载体

WebClientOptions clientOptions = webClient.getOptions();

// 设置webClient的相关参数

clientOptions.setJavaScriptEnabled(true);

clientOptions.setCssEnabled(false);

webClient.setAjaxController(new NicelyResynchronizingAjaxController());

clientOptions.setTimeout(35000);

clientOptions.setThrowExceptionOnScriptError(false);

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

HtmlPage rootPage = null;

try {

rootPage = webClient.getPage(html);

} catch (FailingHttpStatusCodeException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (MalformedURLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

//保存页面

//rootPage.save(new File("/home/share/Test/1"));

//body html信息

HtmlElement htmlElement = rootPage.getBody();

String xmlContent = htmlElement.asXml();

return xmlContent;

}

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线