用HtmlUnit捉取京东手机数据

1.HtmlUnit简要介绍

HtmlUnit是一款java的无界面浏览器程序库。它模拟HTML文档,并提供相应的API,允许您调用页面,填写表单,点击链接等操作,就像您在“正常”浏览器中做的一样。它有相当不错的JavaScript支持(还在不断改进),甚至能够处理相当复杂的AJAX库,模拟Chrome,Firefox或Internet Explorer取决于使用的配置。它通常用于测试目的或从网站检索信息。

HtmlUnit不是一个通用的单元测试框架。它是一种模拟浏览器以用于测试目的的方法,并且旨在用于另一个测试框架(如JUnit或TestNG)中。有关简介,请参阅文档“HtmlUnit入门”。HtmlUnit用作不同的开源工具,如Canoo WebTest,JWebUnit,WebDriver,JSFUnit,WETATOR,Celerity,Spring MVC Test HtmlUnit作为底层的“浏览器”。

HtmlUnit最初由Gargoyle Software的Mike Bowler编写,并根据Apache 2许可证发布。从那时起,它已经收到了许多来自其他开发商的贡献,今天也会得到他们的帮助。

几年前在做一个购物网站的数据抓取工作中,偶然的机会邂逅了HtmlUnit了。记得当时怎么也捉取不到页面上的价格数据,而httpfox也追踪不到价格数据的URL,正当我一愁莫展的时个,HtmlUnit出现并帮我解决了问题。所以今天我要说声谢谢,也将HtmlUnit推荐给大家。

官网地址:htmlunit@sourceforge

2.HtmlUnit动一小手

下载所有Jar文件到类路径中,所有Jar文件可在地址:HtmlUnitJars下载到。或者利用Maven依赖,如下:

maven依赖

下面以某购物网站列表页为例,做一个基本的数据捉取的例子,输入的条件为网站的列表页URL地址,输出的结果为该页面所有产品的名称,价格和评论数并以//做为分隔。不包括推广产品。

例如输入:https://list.jd.com/list.html?cat=9987,653,655

结果输出(多条):

魅族 魅蓝metal 16GB 灰色 电信4G手机 双卡双待//¥699.00 ¥699.00//已有5.2万+人评价

OPPO R9s 全网通4G+64G 双卡双待手机 玫瑰金//¥2799.00 ¥2799.00//已有8.6万+人评价

示例程序

如程序不能取得数据,请调整选择器部分代码。

3.HtmlUnit特性

支持HTTP和HTTPS协议

支持Cookie

能够指定来自服务器的失败响应是否应该抛出异常,或者应该做为适当类型的页面返回(基于内容类型)

支持提交方法POST和GET(以及HEAD,DELETE,...)

能够定制发送到服务器的请求标头

支持HTML响应

HTML页面的封装容易访问其中包含的所有信息

支持提交表单

支持点击链接

支持步行HTML文档的DOM模型

代理服务器支持

支持基本和NTLM身份验证

优秀的JavaScript支持

4.HtmlUnit总结

HtmlUnit的无界面浏览器的核心思想非常好,能执行JavaScript,使其在精神上领先一步。在做数据捉取方面,不用再去做复杂的调用跟踪,AJAX解析等,只要连接页面,等待后台JavaScript执行完毕即可得到想要的Dom文档了。

而在实际的应用中,还是有很多不尽如人意的地方,其一就是对JavaScript执行并不完美,并不能总是得到和实际浏览器完全一样的DOM文档,会报很多的错误;其二就是HtmlUnit的选择器实在是十分难用。

HtmlUnit对JavaScript的支持是其最大的亮点,也是其最需要完善的地方。总的来说HtmlUnit是一款很棒的java工程,值得我们花一些时间来学习和尝试,给我们的武器库增加一件武器,也许什么时候你就会用到它。

本示例程序只是为学习和交流,不能用于商业目的,下载的数据所有权归属原单位。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,772评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,458评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,610评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,640评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,657评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,590评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,962评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,631评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,870评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,611评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,704评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,386评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,969评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,944评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,179评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,742评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,440评论 2 342

推荐阅读更多精彩内容