本人最近在研究爬虫。作为一个新手。研究了些爬虫框架,发现所有开源的爬虫框架很多,功能也很齐全,但唯独遗憾的是,目前还没有发现那个爬虫对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!"); }
相关推荐
首先,HtmlUnit加载整个网页,执行JavaScript,然后Jsoup解析HtmlUnit得到的HTML内容,提取我们需要的数据。这样做的好处在于: 1. **完整内容获取**:HtmlUnit处理JavaScript,确保我们获取到所有动态加载的内容。...
HTMLUnit和Jsoup是两种非常实用的工具,用于在Java编程环境下进行网络爬虫的开发。这个项目练习旨在帮助开发者掌握这两种技术,并通过实践提升网络爬取能力。 HTMLUnit是一个无头(headless)的Java浏览器,它模拟...
10. **爬虫框架的应用**:除了HTMLUnit,项目可能还结合了其他Java爬虫框架,如Jsoup或Apache HttpClient,以增强爬虫的功能和易用性。 通过学习和实践这个“htmlunit爬虫”项目,你将能够深入理解HTMLUnit的工作...
常见的Java爬虫库包括Jsoup、HttpClient、HtmlUnit等,它们各具特色,能够处理不同类型的网页内容。 ### Jsoup库解析 Jsoup是一个强大的HTML解析器,它可以帮助开发者从HTML文档中提取和操作数据。Jsoup可以连接到...
总结起来,这个"htmlunit爬取动态页面包"提供了一整套工具,使得开发者能够编写出能够处理动态内容的Java网络爬虫,通过集成的JavaScript引擎和对HTML的深入解析,实现了高效、全面的数据采集能力。
与Jsoup相比,HtmlUnit更适用于处理有复杂交互的动态网页,因为它可以执行JavaScript代码,这对于许多现代网站来说至关重要,因为很多关键信息往往隐藏在这些脚本中。在抓取公司信息时,如果网站采用了动态加载,...
HTMLUnit的核心特性在于它能够解析和执行JavaScript,这使得它在处理动态内容丰富的网页时非常有效。它通过模拟浏览器的行为,如加载页面、执行脚本、处理Ajax请求等,来获取网页的最终状态。这种能力对于爬虫开发者...
HTMLUnit是一款功能强大的Java库,它模拟了一个无头Web浏览器,允许开发者在没有真实浏览器环境的情况下执行JavaScript,处理Ajax请求,以及与网页进行交互。这个库对于自动化测试、数据抓取和网页爬虫项目非常有用...
4. **异常处理**:当网页加载或执行JavaScript出错时,HTMLUnit会抛出异常,便于我们调试和处理问题。 使用HTMLUnit进行爬虫开发的基本步骤如下: 1. **导入依赖**:首先,你需要在你的项目中引入HTMLUnit的库。...
在本文中,我们将深入探讨如何使用Jsoup和HtmlUnit库来爬取并处理网页上的外币汇率信息。这两个工具是Java编程语言中的强大选择,用于网络数据抓取和页面解析。 首先,Jsoup是一个用于处理实际世界HTML的Java库。它...
2. **JavaScript支持**:HTMLUnit能够执行JavaScript代码,这意味着它能够解析和处理那些依赖JavaScript动态加载内容的网页。 3. **AJAX支持**:HTMLUnit可以处理AJAX异步请求,使得开发者能够测试那些通过AJAX技术...
HtmlUnit是一个无头浏览器,可以执行JavaScript,适用于需要渲染页面的场景。 **数据库**:抓取到的数据通常需要存储以便后续处理和查询,数据库就是理想的存储工具。常见的关系型数据库如MySQL、PostgreSQL和...
总之,HTMLUnit是一个强大的工具,对于自动化测试和网页抓取任务,尤其是处理JavaScript动态生成内容的场景,提供了有效的解决方案。通过理解和熟练运用HTMLUnit,开发者可以更高效地与Web接口进行交互。
因此,我们需要使用HtmlUnit提供的Ajax控制器来模拟JavaScript的执行,并使用Jsoup来解析HTML文档。 本案例演示了如何使用JAVA语言和HtmlUnit爬虫工具模拟登陆CSDN网站,并获取登陆后的页面内容。该案例具有很高的...
GC基于httpclient、htmlunit、jsoup、elasticsearch。 GC的特点: 1、具有DSL特性的模板。 2、分布式、可扩展。 3、辛亏有htmlunit,它能较好地支持javascript。 5、合理的插件设计,方便功能扩充。...
HtmlUnit则是一个无头浏览器,可以执行JavaScript,适合处理动态加载的内容。理解HTML结构和CSS选择器,对于精准定位目标数据至关重要。 接下来,数据提取和清洗是爬虫的另一个关键环节。这通常涉及正则表达式或者...
在这个“网络爬虫实现源码”中,我们主要关注的是利用Jsoup和HtmlUnit这两个Java库来构建爬虫引擎,以及如何从网站上获取图片地址信息。 Jsoup是一个流行的Java库,用于解析HTML文档。它的主要功能包括提取结构化...
HtmlUnit则是一个无头浏览器,能执行JavaScript,适合处理动态加载的内容。 对于“百度贴吧”这个特定场景,爬虫需要处理登录、获取帖子URL、解析页面结构以及提取用户内容、用户名和楼层信息等任务。登录通常涉及...
2. **JavaScript支持**:不同于许多其他爬虫库,HTMLUnit支持JavaScript执行,这意味着它可以处理依赖JavaScript动态生成内容的页面。这对于爬取现代Web应用尤其重要,因为许多网站会用JavaScript来加载和更新内容。...
HtmlUnit则是一个无头浏览器,能够执行JavaScript,更适合处理动态加载的内容。 三、数据提取与处理 数据提取通常涉及XPath或CSS选择器,用于在HTML中找到特定的数据节点。提取后的数据可能包含HTML标签、特殊字符...