抓取js动态生成数据
最近在抓数据,一般的网页数据抓取相对容易一些,今天在抓电视猫的节目单,发现有些数据时抓取不到的,Java端得到的HTML文件里面没有某一段代码,查了很多资料,发现说是js动态生成的数据,无法直接抓取,有一种解决方法是利用找到ajax请求地址和参数,重新抓取,该方法存在一个问题,就是当参数被加密过时,该方法就不好用了,所以,这里用了一个办法,就是利用HTMLunit来抓取(可以利用jsuop来处理HTML文件),jar包下载地址:http://download.csdn.net/detail/joy460154849/9822849(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;
    }  
抓取js动态生成数据的更多相关文章
- 抓取Js动态生成数据且以滚动页面方式分页的网页
		
代码也可以从我的开源项目HtmlExtractor中获取. 当我们在进行数据抓取的时候,如果目标网站是以Js的方式动态生成数据且以滚动页面的方式进行分页,那么我们该如何抓取呢? 如类似今日头条这样的网 ...
 - 抓取js动态生成的数据分析案例
		
需求:爬取https://www.xuexi.cn/f997e76a890b0e5a053c57b19f468436/018d244441062d8916dd472a4c6a0a0b.html页面中的 ...
 - js动态生成数据列表
		
我们通常会使用table标签来展示数据内容,由于需要展示的数据内容是随时更换的,所以不可能将展示的数据列表写死在html写死在页面中,而是需要我们根据后台传来的数据随时更换,这个时候就需要我们使用js ...
 - js动态生成数据的抓取
		
需求:爬取https://www.xuexi.cn/f997e76a890b0e5a053c57b19f468436/018d244441062d8916dd472a4c6a0a0b.html页面中的 ...
 - 爬虫案例(js动态生成数据)
		
需求:爬取https://www.xuexi.cn/f997e76a890b0e5a053c57b19f468436/018d244441062d8916dd472a4c6a0a0b.html页面中的 ...
 - 如何用python抓取js生成的数据 - SegmentFault
		
如何用python抓取js生成的数据 - SegmentFault 如何用python抓取js生成的数据 1赞 踩 收藏 想写一个爬虫,但是需要抓去的的数据是js生成的,在源代码里看不到,要怎么才能抓 ...
 - 爬虫之抓取js生成的数据
		
有很多页面,当我们用request发送请求,返回的内容里面并没有页面上显示的数据,主要有两种情况,一是通过ajax异步发送请求,得到响应把数据放入页面中,对于这种情况,我们可以查看关于ajax的请求, ...
 - 2)JS动态生成HTML元素的爬取
		
2)JS动态生成HTML元素的爬取 import java.util.List; import org.openqa.selenium.By; import org.openqa.selenium.W ...
 - 网站爬取-案例三:今日头条抓取(ajax抓取JS数据)
		
今日头条这类的网站制作,从数据形式,CSS样式都是通过数据接口的样式来决定的,所以它的抓取方法和其他网页的抓取方法不太一样,对它的抓取需要抓取后台传来的JSON数据,先来看一下今日头条的源码结构:我们 ...
 
随机推荐
- hdu-1879 继续畅通工程---确定部分边的MST
			
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1879 题目大意: 省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的 ...
 - POJ-1459 Power Network---最大流
			
题目链接: https://cn.vjudge.net/problem/POJ-1459 题目大意: 简单的说下题意(按输入输出来讲,前面的描述一堆的rubbish,还用来误导人),给你n个点,其中有 ...
 - IOS 网络-深入浅出(一 )
			
首要我们以最为常用的UIImageView为例介绍实现原理: 1)UIImageView+WebCache: setImageWithURL:placeholderImage:options: 先显 ...
 - mysql 获取系统时间的下一天 年-月-日 时:分:秒
			
DAY) as date
 - 处理侧滑返回与 ScrollView 手势冲突
			
与处理双击.单击手势互斥原则一样: // 手势互斥(侧滑返回手势失效后才响应UITableView的滑动手势) [tableView.panGestureRecognizer requireGestu ...
 - 图片url转base64
			
var xhr = new XMLHttpRequest() // 配置的代理,解决跨域问题 xhr.open('GET', url.replace('http://xxx.com', '/img') ...
 - Linux Shell 几个特殊符号命令 & 、&& 、 ||
			
& 放在启动参数后面表示设置此进程为后台进程 默认情况下,进程是前台进程,这时就把Shell给占据了,我们无法进行其他操作,对于那些没有交互的进程,很多时候,我们希望将其在后台启动,可以在启动 ...
 - STL MAP使用注意事项
			
Hat’s Words A hat’s word is a word in the dictionary that is the concatenation of exactly two other ...
 - JSTree下的模糊查询算法——树结构数据层次遍历和递归分治地深入应用
			
A表示区域节点,S表示站点结点 问题描述:现有jstree包含左图中的所有结点信息(包含区域结点和站点结点),需要做到输入站点名称模糊查询,显示查询子树结果如右图 解决策略: 1.先模糊查询所得站点所 ...
 - neo4j 安装
			
查看 http://ip:7474/browser/