htmlUtil 网页爬取工具
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 网页爬取工具的更多相关文章
- HtmlParse:一款超轻量级的HTML文件解析和爬取工具
HtmlParse 是一款基于windwos平台的HTML文档解析工具,可快速构建DOM树,从而轻松实现网页元素的爬取工作.DOM树就是一个HTML文档的节点树,每个节点由:标签(Tag).属性(At ...
- 使用urllib进行网页爬取
# coding=gbk # 抓取开奖号码 # url:http://datachart.500.com/dlt/zoushi/jbzs_foreback.shtml ''' 对网页逐行迭代,找到目标 ...
- WebFetch 是无依赖极简网页爬取组件
WebFetch 是无依赖极简网页爬取组件,能在移动设备上运行的微型爬虫. WebFetch 要达到的目标: 没有第三方依赖jar包 减少内存使用 提高CPU利用率 加快网络爬取速度 简洁明了的api ...
- 动态网页爬取例子(WebCollector+selenium+phantomjs)
目标:动态网页爬取 说明:这里的动态网页指几种可能:1)需要用户交互,如常见的登录操作:2)网页通过JS / AJAX动态生成,如一个html里有<div id="test" ...
- Python和BeautifulSoup进行网页爬取
在大数据.人工智能时代,我们通常需要从网站中收集我们所需的数据,网络信息的爬取技术已经成为多个行业所需的技能之一.而Python则是目前数据科学项目中最常用的编程语言之一.使用Python与Beaut ...
- Node.js 动态网页爬取 PhantomJS 使用入门(转)
Node.js 动态网页爬取 PhantomJS 使用入门 原创NeverSettle101 发布于2017-03-24 09:34:45 阅读数 8309 收藏 展开 版权声明:本文为 winte ...
- Java开源网页抓取工具httpClient以及jsoup
网上看到不错的Java网页抓取工具和库 先记录一下 使用java开源工具httpClient及jsoup抓取解析网页数据
- 爬虫入门(三)——动态网页爬取:爬取pexel上的图片
Pexel上有大量精美的图片,没事总想看看有什么好看的自己保存到电脑里可能会很有用 但是一个一个保存当然太麻烦了 所以不如我们写个爬虫吧(๑•̀ㅂ•́)و✧ 一开始学习爬虫的时候希望爬取pexel上的 ...
- 【Python开发】网页爬取心得
转载:python 爬虫抓取心得分享 title:python 爬虫抓取心得分享 0x1.urllib.quote('要编码的字符串')如果你要在url请求里面放入中文,对相应的中文进行编码的话,可以 ...
随机推荐
- Spark性能调优之Shuffle调优
Spark性能调优之Shuffle调优 • Spark底层shuffle的传输方式是使用netty传输,netty在进行网络传输的过程会申请堆外内存(netty是零拷贝),所以使用了堆外内存. ...
- 学习JVM-GC收集器
1. 前言 在上一篇文章中,介绍了JVM中垃圾回收的原理和算法.介绍了通过引用计数和对象可达性分析的算法来筛选出已经没有使用的对象,然后介绍了垃圾收集器中使用的三种收集算法:标记-清除.标记-整理.标 ...
- NSMutableArray 记住取不到时要进行强转
NSMutableArray 记住取不到时要进行强转
- 浅析RPC概念框架
本文原封不动的来至于csdn MindWind,原文请见 RPC:RPC 的全称是 Remote Procedure Call 是一种进程间通信方式.它允许程序调用另一个地址空间(通常是共享网络的另一 ...
- The POM for * is invalid
The POM for yanan:jar:1.0-SNAPSHOT is invalid, transitive dependencies (if any) will not be availabl ...
- 【转】GLONASS全球卫星导航系统
GLONASS是“GLOBAL NAVIGATION SATELLITE SYSTE(全球卫星导航系统)”的缩写,作用类似于美国的GPS.欧洲的伽利略卫星定位系统.最早开发于苏联时期,后由俄罗斯继续该 ...
- 5分钟编写运行一个RChain合约
今天介绍如何编写和测试一个RChain智能合约,Rholang的语法介绍在https://developer.rchain.coop/tutorial 1.安装docker 这个自己百度一下,安装都是 ...
- pat 1014 1017 排队类问题
1.用循环模拟时间 2.采用结构体模拟客户和窗口对象 3.合理处理边界,去除无用信息 4.使用自带排序sort()结合自定义功能函数compare()实现排序
- JAVA动态代理机制解析
1. 概述 首先,我们来思考如下两个问题: 什么是代理模式?为什么要使用代理模式? 简单总结一下,所谓的代理模式就是在原有的服务上多加一个占位,通过这个占位去控制服务的访问.通过代理模式,一方面可以控 ...
- 01_Linux安装
一.VMware创建一个虚拟机 下一步 .下一步 .下一步 ..前方高能 二.安装CentOS 6.7 next -> 选择 中文简体 -> 美式键盘,直接下一步 ,一直下一 ...