一、WEB测试工具介绍

httpunit是一个可以模拟浏览器的集成工具,它可以让你在不需要浏览器的情况下模拟浏览器的浏览行为,该工具是junit测试工具下面的一个子框架,主要用来做web端测试使用,它的诞生主要是解决junit框架没法对远程web内容进行测试的问题。

httpunit的出现解决了我们能够绕过浏览器直接从程序中访问我们的站点,该工具使用Java语言编写完成,能够很好的跟Java程序相互协作,丰富的API能够能够轻易地与Java程序和服务器之间进行简易的交互,服务端返回的结果可以当作DOM元素进行处理。

目前httpunit版本已经更新到1.7,下载地址如下:

二、网络爬虫功能介绍

由于httpunit工具能够模拟浏览器的行为,并且将结果当成Dom元素进行解析,还能够模拟HTTP请求认证、表单提交、cookie登录页面重定向等,所以该技术还通常用于网络爬虫的实现,动态抓取网页元素,动态解析页面标签。

三、httpunit与jsoup爬虫功能比较

jsoup最大的优势就是它可以快速的爬取静态页面儿,并且能够将静态页面里面的标签迅速识别,像jquery一样快速的解析页面标签内容。

jsoup碰到动态页面有一定的弊端,因为动态页面的内容是通过浏览器浏览ajax动态访问后台服务器,然后返回内容之后使用js脚本解析内容到页面上,jsoup无法做到解析动态内容。

httpunit刚好补缺了jsoup的缺点,他能够动态模拟浏览器访问url,然后动态的获取url上的内容进行解析,从而完成动态爬虫的抓取功能。

四、爬虫模拟点击按钮代码实战

了解httpunit的api

大家都知道Java语言中应用一个工具或者工具类的时候,首先需要创建工具类的对象,然后调用对象的方法完成某些业务,而httpunit也不例外,下面就是对象创建的代码:

final WebClient webClient=new WebClient();

爬虫做爬取功能需要传入某个页面的url,然后获得该url的page对象,代码如下:

final HtmlPage page=webClient.getPage(“http://www.itjcw123.cn”);

得到代表页面的page对象后可以解析页面元素,既可以让页面以txt文本方式展示,也可以xml文件的方式展示,代码如下:

System.out.println(page.asXml());

System.out.println(page.asText());

完成页面内容解析之后别忘了将模拟工具对象销毁,api代码如下:

webClient.closeAllWindows();

爬虫模拟百度搜索框点击按钮实战

步骤一:创建webClient浏览器模拟对象,调用getPage方法方法百度首页url地址,得到代表首页的htmlpage对象,由于我们模拟的是静态页面,故需要设置关闭js解析,爬虫也不需要样式,因此也需要关闭css样式设置,具体代码见下图所示:

步骤二:既然我们是用爬虫模拟百度搜索框点击搜索,所以我们要首先获取到百度首页的form表单,代码如下所示:

final HtmlForm form = htmlpage.getFormByName(“f”);

拿到表单ID之后,然后再找到百度一下这个蓝色点击按钮的ID,代码如下:

final HtmlSubmitInput button = form.getInputByValue(“百度一下”);

最后,拿到百度搜索框的ID,以便于后面的模拟点击,代码如下:

final HtmlTextInput textField = form.getInputByName(“q1”);

步骤三:前期的准备工作都已经做完,并且该获取的ID也已经获取完成,接下来我们就可以模拟人工在搜索框输入内容。然后点击按钮完成搜索,具体代码见下图所示:

获取到的搜索结果页的数据是以xml格式的数据展现,XML这个文件格式比较规整,标签儿较完整,解析内容时多以解析某个标签中的内容为主,所以xml格式相比于txt更加优雅。

最后解析数据时,我们更建议使用jsoup这个工具,jsoup解析静态页面的标签儿更加的方便和简洁,使用起来更加顺手。

java测试模拟网页点击,httpunit爬虫模拟搜索详解与实战相关推荐

  1. php如何模拟网页点击按钮,python模拟点击网页按钮如何实现 python模拟点击网页按钮实现方法...

    python模拟点击网页按钮如何实现 python模拟点击网页按钮实现方法 本篇文章小编给大家分享一下python模拟点击网页按钮实现方法,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们 ...

  2. python模拟网页点击_python怎么模拟点击网页按钮

    python怎么模拟点击网页按钮 前提环境: Python3 和 Visual Studio Code安装完毕 . 安装selenium : 在终端输入: pip install selenium, ...

  3. java 模拟点击按钮_HttpUnit模拟按钮点击以及爬虫实现(模拟百度搜索)

    HttpUnit模拟按钮点击以及爬虫实现(模拟百度搜索) HttpUnit 本质上相当于一个后台的透明的浏览器引擎,使用java中的HttpUnit可以实现模拟点击按钮,抓取网页元素,实现动态爬虫,之 ...

  4. 模拟网页点击爬虫交管12123违章数据!违章信息及时处理!

    本次介绍怎么以模拟点击方式进入交管12123爬取车辆违章数据,本文直接讲解过程,使用的命令解释见上一篇文章.本文同<Python教程-模拟网页点击爬虫定位系统>同样为企业中实际的爬虫案例, ...

  5. node.js如何模拟网页点击?

    可以使用 Node.js 和一个第三方库,如 Puppeteer,来模拟网页点击.Puppeteer 是一个 Node.js 库,它提供了一个高级 API,用于控制 Chrome 或 Chromium ...

  6. Java生鲜电商平台-电商中海量搜索ElasticSearch架构设计实战与源码解析

    Java生鲜电商平台-电商中海量搜索ElasticSearch架构设计实战与源码解析 生鲜电商搜索引擎的特点 众所周知,标准的搜索引擎主要分成三个大的部分,第一步是爬虫系统,第二步是数据分析,第三步才 ...

  7. fofa自动化爬虫脚本更新+详解

    fofa自动化爬虫脚本更新+详解 起因 最近要用到fofa爬虫,为什么要用爬虫不用api,问就是穷,想起来之前写过一个相关的脚本:Fofa-python-脚本,是很久以前写的了,之前写的时候有点问题, ...

  8. Python爬虫JS解密详解,学会直接破解80%的网站(一)!!!

    文章目录 1.网页查看 2.有道翻译简单实现源码 3.JS解密(详解) 4.python实现JS解密后的完整代码 4.1.实现效果 5.JS解密后完整代码升级版 5.1.实现效果 CSDN独家福利降临 ...

  9. python爬虫入门实例-Python爬虫天气预报实例详解(小白入门)

    本文研究的主要是Python爬虫天气预报的相关内容,具体介绍如下. 要求是把你所在城市过去一年的历史数据爬出来. 分析网站 我们可以看到,我们需要的天气数据都是放在图表上的,在切换月份的时候,发现只有 ...

最新文章

  1. Redis6安装配置集群cluster以及集群宕机注意事项
  2. ewebeditor后台拿shell
  3. 合并两个有序数组为一个新的有序数组
  4. SQLserver2008高级查询语句应用实例
  5. OCJP认证考试复习课-张晨光-专题视频课程
  6. 15 个最新的 CSS3 教程
  7. 亚马逊S3文件存储的可视化
  8. dd var tmp .oracle,Oracle 11gR2 RAC ohasd failed to start 解决方法
  9. VScode我的setting.json设置,和搜狗输入法配置
  10. Excel VBA 入门(零)
  11. Django中的 返回json对象的方式
  12. 数据库系统概论第五版(笔记+习题答案)(全)
  13. 计算机应用基础信息素养,计算机应用基础:信息素养+Office 2013办公自动化
  14. 大学计算机学五笔吗,新手学五笔打字
  15. 【Java教程】Java 抽象工厂模式
  16. matlab插值拟合
  17. [转]PT与PX区别
  18. mac上投屏android_简单实用的手机投屏Mac电脑
  19. CSS 文字背景水印
  20. 千图网爬图片(BeautifulSoup)

热门文章

  1. 十年京东,十年技术发展—畅读《京东技术解密》
  2. Golang二进制反汇编
  3. 最小的语言符号是A词B语素C音素D义素,自考汉语言文学专业:2008年1语言学概论历年真题00541...
  4. 手机来电通核心模块——归属地数据库设计(Winsym原创) 1
  5. 用js自定义视频播放器
  6. Tryhackme-Threat and Vulnerability Management
  7. mysql双机备份最简单_MySQL的本地备份和双机相互备份脚本
  8. 极品飞车无限狂飚连不上服务器,极品飞车无限狂飙电脑版
  9. android 8 ril,Android RIL源码研究笔记 の ril (一)
  10. 怎么使用 Buildroot 构建根文件系统