Htmlunit是一款模拟浏览抓取页面内容的Java框架,具有js解析引擎(rhino),可以解析页面的js脚本,得到完整的页面内容,特殊适合于这种非完整页面的站点抓取

 /**
      * 获取页面的TITLE、XML代码、文本
      */
     @Test
     public void connNet() throws Exception {
         String str;
         // 创建一个webclient
         WebClient webClient = new WebClient(BrowserVersion.FIREFOX_24);
         // htmlunit 对css和javascript的支持不好,所以请关闭之
         webClient.getOptions().setJavaScriptEnabled(false);
         webClient.getOptions().setCssEnabled(false);
         // 获取页面
         HtmlPage page = webClient.getPage("http://www.baidu.com/");
         // 获取页面的TITLE
         str = page.getTitleText();
         System.out.println(str);
         // 获取页面的XML代码
         str = page.asXml();
         System.out.println(str);
         // 获取页面的文本
         str = page.asText();
         System.out.println(str);
         // 关闭webclient
         webClient.closeAllWindows();
     }

     /**
      * 找到页面中特定的元素
      */
     @Test
     public void getInput() throws Exception {
         // 创建webclient
         WebClient webClient = new WebClient(BrowserVersion.CHROME);
         // htmlunit 对css和javascript的支持不好,所以请关闭之
         webClient.getOptions().setJavaScriptEnabled(false);
         webClient.getOptions().setCssEnabled(false);
         HtmlPage page = (HtmlPage) webClient.getPage("http://www.baidu.com/");
         // 通过id获得"百度一下"按钮
         HtmlInput btn = (HtmlInput) page.getHtmlElementById("su");
         System.out.println(btn.getDefaultValue());
         // 关闭webclient
         webClient.closeAllWindows();
     }

     /**
      * 元素检索
      */
     @Test
     public void search() throws Exception {
         // 创建webclient
         WebClient webClient = new WebClient(BrowserVersion.CHROME);
         // htmlunit 对css和javascript的支持不好,所以请关闭之
         webClient.getOptions().setJavaScriptEnabled(false);
         webClient.getOptions().setCssEnabled(false);
         HtmlPage page = (HtmlPage) webClient.getPage("http://www.baidu.com/");
         // 查找所有div
         List<?> hbList = page.getByXPath("//div");
         HtmlDivision hb = (HtmlDivision) hbList.get(0);
         System.out.println(hb.toString());
         // 查找并获取特定input
         List<?> inputList = page.getByXPath("//input[@id='su']");
         HtmlInput input = (HtmlInput) inputList.get(0);
         System.out.println(input.toString());
         // 关闭webclient
         webClient.closeAllWindows();
     }

     /**
      * 提交搜索
      */
     @Test
     public void submitForm() throws Exception {
         // 创建webclient
         WebClient webClient = new WebClient(BrowserVersion.CHROME);
         // htmlunit 对css和javascript的支持不好,所以请关闭之
         webClient.getOptions().setJavaScriptEnabled(false);
         webClient.getOptions().setCssEnabled(false);
         HtmlPage page = (HtmlPage) webClient.getPage("http://www.baidu.com/");
         // 获取搜索输入框并提交搜索内容
         HtmlInput input = (HtmlInput) page.getHtmlElementById("kw");
         System.out.println(input.toString());
         input.setValueAttribute("博客园");
         System.out.println(input.toString());
         // 获取搜索按钮并点击
         HtmlInput btn = (HtmlInput) page.getHtmlElementById("su");
         HtmlPage page2 = btn.click();
         // 输出新页面的文本
         System.out.println(page2.asText());
     }

htmlUtil 网页爬取工具的更多相关文章

  1. HtmlParse:一款超轻量级的HTML文件解析和爬取工具

    HtmlParse 是一款基于windwos平台的HTML文档解析工具,可快速构建DOM树,从而轻松实现网页元素的爬取工作.DOM树就是一个HTML文档的节点树,每个节点由:标签(Tag).属性(At ...

  2. 使用urllib进行网页爬取

    # coding=gbk # 抓取开奖号码 # url:http://datachart.500.com/dlt/zoushi/jbzs_foreback.shtml ''' 对网页逐行迭代,找到目标 ...

  3. WebFetch 是无依赖极简网页爬取组件

    WebFetch 是无依赖极简网页爬取组件,能在移动设备上运行的微型爬虫. WebFetch 要达到的目标: 没有第三方依赖jar包 减少内存使用 提高CPU利用率 加快网络爬取速度 简洁明了的api ...

  4. 动态网页爬取例子(WebCollector+selenium+phantomjs)

    目标:动态网页爬取 说明:这里的动态网页指几种可能:1)需要用户交互,如常见的登录操作:2)网页通过JS / AJAX动态生成,如一个html里有<div id="test" ...

  5. Python和BeautifulSoup进行网页爬取

    在大数据.人工智能时代,我们通常需要从网站中收集我们所需的数据,网络信息的爬取技术已经成为多个行业所需的技能之一.而Python则是目前数据科学项目中最常用的编程语言之一.使用Python与Beaut ...

  6. Node.js 动态网页爬取 PhantomJS 使用入门(转)

    Node.js 动态网页爬取 PhantomJS 使用入门 原创NeverSettle101 发布于2017-03-24 09:34:45 阅读数 8309  收藏 展开 版权声明:本文为 winte ...

  7. Java开源网页抓取工具httpClient以及jsoup

    网上看到不错的Java网页抓取工具和库 先记录一下 使用java开源工具httpClient及jsoup抓取解析网页数据

  8. 爬虫入门(三)——动态网页爬取:爬取pexel上的图片

    Pexel上有大量精美的图片,没事总想看看有什么好看的自己保存到电脑里可能会很有用 但是一个一个保存当然太麻烦了 所以不如我们写个爬虫吧(๑•̀ㅂ•́)و✧ 一开始学习爬虫的时候希望爬取pexel上的 ...

  9. 【Python开发】网页爬取心得

    转载:python 爬虫抓取心得分享 title:python 爬虫抓取心得分享 0x1.urllib.quote('要编码的字符串')如果你要在url请求里面放入中文,对相应的中文进行编码的话,可以 ...

随机推荐

  1. 国寿e店/人寿云参会云助理,不去公司就能刷脸考勤打卡?

    自从2017年3月平安保险公司实行E行销打卡考勤以来,保险增员迅猛增加,保险业绩也随之水涨船高.年底开始中国人寿保险也陆续开始实行app考勤,有些需要连接公司指定WiFi,或在指定地点方可打卡考勤.不 ...

  2. Spark算子--reduceByKey

    reduceByKey--Transformation类算子 代码示例 result  

  3. Laravel5中使用阿里大于(鱼)发送短信验证码

    在做用户注册和个人中心的安全管理时,我实现借助第三方短信平台(阿里大于(鱼))在Laravel框架中进行手机验证的设置:阿里大于,是阿里通信旗下优质便捷的云通信服务平台,整合了三大运营商的通信能力,为 ...

  4. 新版Azure Automation Account 浅析(二) --- 更新Powershell模块和创建Runbook

    前篇我们讲了怎样创建一个自动化账户以及创建时候"Run As Account"选项背后的奥秘.这一篇针对在Azure自动化账户中使用Powershell Runbook的用户讲一下 ...

  5. 【开发技术】json

    json(JavaScript Object Notation) JavaScript对象符号是一种结构化轻量级的数据传输格式,很多场合替代XML文件格式 JSON格式化校验:http://www.b ...

  6. common-logging--源码之SimpleLog

    common-logging源码Log接口 在common-logging的源码中,将log核心类抽象成了一个Log接口. 这里贴出Log接口的源码: /* * Licensed to the Apa ...

  7. JS获取滚动条距离顶部高度

    一.jQuery获取的相关方法 jquery 获取滚动条高度 获取浏览器显示区域的高度 : $(window).height(); 获取浏览器显示区域的宽度 : $(window).width(); ...

  8. DOM中对象的获得

    DOM的所有对象会在页面打开时,由浏览器页面创建. 浏览器把dom定点对象Document对像的引用交给了window对象. 1.document对象的获得    var doc = window.d ...

  9. C语言预处理 编译 汇编 链接四个阶段

    c程序(源代码)转换成可以在硬件上运行的程序(可执行代码),需要进行编译和链接. 编译过程 编译过程又可以分成两个阶段:编译和会汇编. 编译 编译是读取源程序(字符流),对之进行词法和语法的分析,将高 ...

  10. 08_Python编码与解码

    一.编码的由来 因为计算机只能处理010101二进制数据,如果要处理文本,图像,视频等,需要我们把数据转换成01010二进制格式才能被计算机处理 最先出现的是ASCII,用8位一个字节来表示,成为单字 ...