`
jiaoronggui
  • 浏览: 1327813 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
博客专栏
B7c2eb31-a8ea-3973-a517-d00141f39b89
项目管理软件-redmin...
浏览量:116414
4a63e153-250f-30f6-a051-97cfc67cb3d3
IT职业规划
浏览量:199304
社区版块
存档分类
最新评论

HtmlUnit+Jsoup 解决爬虫无法解析执行javascript的问题

 
阅读更多

本人最近在研究爬虫。作为一个新手。研究了些爬虫框架,发现所有开源的爬虫框架很多,功能也很齐全,但唯独遗憾的是,目前还没有发现那个爬虫对js完美的解释并执行。看了浅谈网络爬虫爬js动态加载网页(二)之后很有感慨,首先对博主的钻研精神季度敬佩。虽然该文中第二和第三种方案不怎么靠谱,但能想到这些方案,说明博主的思维发散性很强,不会局限于单方向钻牛角尖式的思考。不过很遗憾,因为我就是这样的人。我始终觉得博主对于HtmlUnit的了解不够深入(也可能是我的误解)。于是就开始钻牛角尖了。看了HtmlUnit的简介之后,我有一种预感,认为HtmlUnit没理由不能支持Js的自动解释于执行,事实证明了我的想法。 废话多说无益,

这里拿地址【http://cq.qq.com/baoliao/detail.htm?294064】来测试,通过查看该页面源码,可以发现,该页面文章标题,内容,浏览量都是采用占位符的形式,在页面加载时,通过js替换之,下面代码获取该文章浏览量字段。

 

public void testCrawler() throws Exception {  
        /**HtmlUnit请求web页面*/  
        WebClient wc = new WebClient();  
        wc.getOptions().setJavaScriptEnabled(true); //启用JS解释器,默认为true  
        wc.getOptions().setCssEnabled(false); //禁用css支持  
        wc.getOptions().setThrowExceptionOnScriptError(false); //js运行错误时,是否抛出异常  
        wc.getOptions().setTimeout(10000); //设置连接超时时间 ,这里是10S。如果为0,则无限期等待  
        HtmlPage page = wc.getPage("http://cq.qq.com/baoliao/detail.htm?294064");  
        String pageXml = page.asXml(); //以xml的形式获取响应文本  
  
        /**jsoup解析文档*/  
        Document doc = Jsoup.parse(pageXml, "http://cq.qq.com");   
        Element pv = doc.select("#feed_content span").get(1);  
        System.out.println(pv.text());  
        Assert.assertTrue(pv.text().contains("浏览"));  
  
        System.out.println("Thank God!");  
    }

 

分享到:
评论

相关推荐

    htmlunit2.8 + jsoup1.7网站数据抓取

    首先,HtmlUnit加载整个网页,执行JavaScript,然后Jsoup解析HtmlUnit得到的HTML内容,提取我们需要的数据。这样做的好处在于: 1. **完整内容获取**:HtmlUnit处理JavaScript,确保我们获取到所有动态加载的内容。...

    htmluinit+jsoup 网络爬虫 项目练习

    HTMLUnit和Jsoup是两种非常实用的工具,用于在Java编程环境下进行网络爬虫的开发。这个项目练习旨在帮助开发者掌握这两种技术,并通过实践提升网络爬取能力。 HTMLUnit是一个无头(headless)的Java浏览器,它模拟...

    htmlunit爬虫.rar

    10. **爬虫框架的应用**:除了HTMLUnit,项目可能还结合了其他Java爬虫框架,如Jsoup或Apache HttpClient,以增强爬虫的功能和易用性。 通过学习和实践这个“htmlunit爬虫”项目,你将能够深入理解HTMLUnit的工作...

    Java爬虫Jsoup+httpclient获取动态生成的数据

    常见的Java爬虫库包括Jsoup、HttpClient、HtmlUnit等,它们各具特色,能够处理不同类型的网页内容。 ### Jsoup库解析 Jsoup是一个强大的HTML解析器,它可以帮助开发者从HTML文档中提取和操作数据。Jsoup可以连接到...

    htmlunit爬取动态页面jar包

    总结起来,这个"htmlunit爬取动态页面包"提供了一整套工具,使得开发者能够编写出能够处理动态内容的Java网络爬虫,通过集成的JavaScript引擎和对HTML的深入解析,实现了高效、全面的数据采集能力。

    针对 httpclient4.* 绕验证码获取公司信息 包括 jsoup网页信息的爬虫及htmlUnit对动态网站信息的抓取

    与Jsoup相比,HtmlUnit更适用于处理有复杂交互的动态网页,因为它可以执行JavaScript代码,这对于许多现代网站来说至关重要,因为很多关键信息往往隐藏在这些脚本中。在抓取公司信息时,如果网站采用了动态加载,...

    htmlunit爬虫技术jar包

    HTMLUnit的核心特性在于它能够解析和执行JavaScript,这使得它在处理动态内容丰富的网页时非常有效。它通过模拟浏览器的行为,如加载页面、执行脚本、处理Ajax请求等,来获取网页的最终状态。这种能力对于爬虫开发者...

    htmlunit依赖jar包

    HTMLUnit是一款功能强大的Java库,它模拟了一个无头Web浏览器,允许开发者在没有真实浏览器环境的情况下执行JavaScript,处理Ajax请求,以及与网页进行交互。这个库对于自动化测试、数据抓取和网页爬虫项目非常有用...

    htmlunit爬虫技术

    4. **异常处理**:当网页加载或执行JavaScript出错时,HTMLUnit会抛出异常,便于我们调试和处理问题。 使用HTMLUnit进行爬虫开发的基本步骤如下: 1. **导入依赖**:首先,你需要在你的项目中引入HTMLUnit的库。...

    jsoup+htmlunitl 爬取外币汇率

    在本文中,我们将深入探讨如何使用Jsoup和HtmlUnit库来爬取并处理网页上的外币汇率信息。这两个工具是Java编程语言中的强大选择,用于网络数据抓取和页面解析。 首先,Jsoup是一个用于处理实际世界HTML的Java库。它...

    htmlunit-2.8(api文档).zip

    2. **JavaScript支持**:HTMLUnit能够执行JavaScript代码,这意味着它能够解析和处理那些依赖JavaScript动态加载内容的网页。 3. **AJAX支持**:HTMLUnit可以处理AJAX异步请求,使得开发者能够测试那些通过AJAX技术...

    java网络爬虫+数据库+jsp+搜索引擎.rar.rar

    HtmlUnit是一个无头浏览器,可以执行JavaScript,适用于需要渲染页面的场景。 **数据库**:抓取到的数据通常需要存储以便后续处理和查询,数据库就是理想的存储工具。常见的关系型数据库如MySQL、PostgreSQL和...

    htmlunit-2.26-bin

    总之,HTMLUnit是一个强大的工具,对于自动化测试和网页抓取任务,尤其是处理JavaScript动态生成内容的场景,提供了有效的解决方案。通过理解和熟练运用HTMLUnit,开发者可以更高效地与Web接口进行交互。

    JAVA使用HtmlUnit爬虫工具模拟登陆CSDN案例

    因此,我们需要使用HtmlUnit提供的Ajax控制器来模拟JavaScript的执行,并使用Jsoup来解析HTML文档。 本案例演示了如何使用JAVA语言和HtmlUnit爬虫工具模拟登陆CSDN网站,并获取登陆后的页面内容。该案例具有很高的...

    网络爬虫goodcrawler.zip

    GC基于httpclient、htmlunit、jsoup、elasticsearch。 GC的特点: 1、具有DSL特性的模板。 2、分布式、可扩展。 3、辛亏有htmlunit,它能较好地支持javascript。 5、合理的插件设计,方便功能扩充。...

    网络爬虫算法 java

    HtmlUnit则是一个无头浏览器,可以执行JavaScript,适合处理动态加载的内容。理解HTML结构和CSS选择器,对于精准定位目标数据至关重要。 接下来,数据提取和清洗是爬虫的另一个关键环节。这通常涉及正则表达式或者...

    网络爬虫实现源码

    在这个“网络爬虫实现源码”中,我们主要关注的是利用Jsoup和HtmlUnit这两个Java库来构建爬虫引擎,以及如何从网站上获取图片地址信息。 Jsoup是一个流行的Java库,用于解析HTML文档。它的主要功能包括提取结构化...

    百度贴吧java爬虫

    HtmlUnit则是一个无头浏览器,能执行JavaScript,适合处理动态加载的内容。 对于“百度贴吧”这个特定场景,爬虫需要处理登录、获取帖子URL、解析页面结构以及提取用户内容、用户名和楼层信息等任务。登录通常涉及...

    htmlunit-2.14.jar下载,全套

    2. **JavaScript支持**:不同于许多其他爬虫库,HTMLUnit支持JavaScript执行,这意味着它可以处理依赖JavaScript动态生成内容的页面。这对于爬取现代Web应用尤其重要,因为许多网站会用JavaScript来加载和更新内容。...

    java网络爬虫搜索引擎

    HtmlUnit则是一个无头浏览器,能够执行JavaScript,更适合处理动态加载的内容。 三、数据提取与处理 数据提取通常涉及XPath或CSS选择器,用于在HTML中找到特定的数据节点。提取后的数据可能包含HTML标签、特殊字符...

Global site tag (gtag.js) - Google Analytics