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. WPF 文本滚动效果 渐变效果

    <DockPanel> <StackPanel DockPanel.Dock="Bottom" VerticalAlignment="Bottom&qu ...

  2. vueThink权限配置

    vueThink中的 admin 默认是展示所有权限,其他的权限组用户就要自己去特定进行配置 http://vuedemo.cn:8181 这里我是默认本地配置了apache到  php\public ...

  3. phpcms v9——工作需要【套模板】

    phpcms v9 模板标签说明整理 作者:匿名 来源:ChinaZ源码报导 浏览:44061次 2011-6-17 15:52:09 字号:大 中 小 [摘要]本文介绍phpcms v9中模板标签使 ...

  4. hive分区(partition)

    网上有篇关于hive的partition的使用讲解的比较好,转载了:一.背景1.在Hive Select查询中一般会扫描整个表内容,会消耗很多时间做没必要的工作.有时候只需要扫描表中关心的一部分数据, ...

  5. Sublime Text 2激活、插件包安装、以及快捷键

    http://jingyan.baidu.com/article/ff4116259b057c12e48237b8.html Sublime Text作为一款轻量.简洁.高效.跨平台的编辑器.支持N多 ...

  6. IOS 使用 ZbarSDK 二维码扫描

    1. 下载SDK   https://github.com/bmorton/ZBarSDK 2. 引用到项目中 3. 添加引用 4. AppDelegate中添加下面代码 5. 在需要使用扫描的con ...

  7. FORTH基础

    body, table{font-family: 微软雅黑} table{border-collapse: collapse; border: solid gray; border-width: 2p ...

  8. PHP数据核心:Zend HashTable详解

    最近看了篇关于php内的hashtable的文章,PHP数据存储的核心,各种常量.变量.函数.类.对象等都用它来组织的.转载地址 http://www.phppan.com/2009/12/zend- ...

  9. httpd: Could not reliably determine the server's fully qualified domain name, using ::1 for ServerName

    问题原因: httpd服务配置文件,并没有设置解析根地址,无法可靠地确定服务器的完全合格的域名 如何解决? httpd的配置文件放在 /etc/httpd/conf/目录下,去掉ServerName注 ...

  10. HTML学习(一)

    文本输出/超链接 <!--/* * @<h1></h1>到<h6></h6>六个h标签,分别表示不同大小的字体.h1最大,h6最小 * @< ...