`
sillycat
  • 浏览: 2541893 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

彩票计算JAVA版(一)获取HTML页面的内容

阅读更多
彩票计算JAVA版(一)获取HTML页面的内容

主要用到了开源的两个包,pom.xml书写如下:
<dependency>
<groupId>org.htmlparser</groupId>
<artifactId>htmlparser</artifactId>
<version>1.6</version>
</dependency>
<dependency>
<groupId>cpdetector</groupId>
<artifactId>cpdetector</artifactId>
<version>1.0.5</version>
</dependency>
核心类HTMLParserUtil.java内容如下:
package com.sillycat.easyluck.common.html;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.SocketException;
import java.net.SocketTimeoutException;
import java.net.URL;
import java.net.UnknownHostException;
import java.nio.charset.Charset;
import org.htmlparser.Parser;
import org.htmlparser.util.NodeList;
import org.htmlparser.util.ParserException;
import org.htmlparser.visitors.HtmlPage;
import cpdetector.io.ASCIIDetector;
import cpdetector.io.CodepageDetectorProxy;
import cpdetector.io.JChardetFacade;
import cpdetector.io.ParsingDetector;
import cpdetector.io.UnicodeDetector;
public class HtmlParserUtil {
/* StringBuffer的缓冲区大小 */
public static int TRANSFER_SIZE = 4096;
/* 当前平台的行分隔符 */
public static String lineSep = System.getProperty("line.separator");
/* 自动探测页面编码,避免中文乱码的出现 */
public static String autoDetectCharset(URL url) {
CodepageDetectorProxy detector = CodepageDetectorProxy.getInstance();
/**
* ParsingDetector可用于检查HTML、XML等文件或字符流的编码 构造方法中的参数用于指示是否显示探测过程的详细信息
* 为false则不显示
*/
detector.add(new ParsingDetector(false));
detector.add(JChardetFacade.getInstance());
detector.add(ASCIIDetector.getInstance());
detector.add(UnicodeDetector.getInstance());

Charset charset = null;
try {
charset = detector.detectCodepage(url);
} catch (MalformedURLException mue) {
mue.printStackTrace();
} catch (IOException ie) {
ie.printStackTrace();
}
if (charset == null)
charset = Charset.defaultCharset();
return charset.name();
}
/* 按照指定编码解析标准的html页面,为建立索引做准备 */
public static String[] parseHtml(String url, String charset) {
String result[] = null;
String content = null;
try {
URL source = new URL(url);
InputStream in = source.openStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(
in, charset));
String line = new String();
StringBuffer temp = new StringBuffer(TRANSFER_SIZE);
while ((line = reader.readLine()) != null) {
temp.append(line);
temp.append(lineSep);
}
reader.close();
in.close();
content = temp.toString();
} catch (UnsupportedEncodingException uee) {
uee.printStackTrace();
} catch (MalformedURLException mue) {
System.err.println("Invalid URL : " + url);
} catch (UnknownHostException uhe) {
System.err.println("UnknowHost : " + url);
} catch (SocketException se) {
System.err.println("Socket Error : " + se.getMessage() + " " + url);
} catch (SocketTimeoutException ste) {
System.err.println("Socket Connection Time Out : " + url);
} catch (FileNotFoundException fnfe) {
System.err.println("broken link "
+ ((FileNotFoundException) fnfe.getCause()).getMessage()
+ " ignored");
} catch (IOException ie) {
ie.printStackTrace();
}
if (content != null) {
Parser myParser = Parser.createParser(content, charset);
HtmlPage visitor = new HtmlPage(myParser);
try {
myParser.visitAllNodesWith(visitor);
String body = null;
String title = "Untitled";
if (visitor.getBody() != null) {
NodeList nodelist = visitor.getBody();
body = nodelist.asString().trim();
}
if (visitor.getTitle() != null) {
title = visitor.getTitle();
}
result = new String[] { body, title };
} catch (ParserException pe) {
pe.printStackTrace();
}
}
return result;
}
}

测试用例HtmlParserUtilTest.java
package com.sillycat.easyluck.common.html;
import java.net.MalformedURLException;
import java.net.URL;
import junit.framework.TestCase;
import com.sillycat.easybase.utils.StringUtil;
public class HtmlParserUtilTest extends TestCase {
private String url = "http://www.mengjiang.net/listnews.asp?dncp=small&anid=2&nid=14&Page=1";
protected void setUp() throws Exception {
super.setUp();
}
protected void tearDown() throws Exception {
super.tearDown();
}
public void testDumy() {
assertTrue(true);
}
public void testAutoDetectCharset() throws MalformedURLException {
String encode = HtmlParserUtil.autoDetectCharset(new URL(url));
assertTrue(StringUtil.isNotBlank(encode));
}
public void testParseHtml() throws MalformedURLException {
String[] contexts = HtmlParserUtil.parseHtml(url, HtmlParserUtil
.autoDetectCharset(new URL(url)));
assertNotNull(contexts);
assertTrue(contexts.length == 2);
assertTrue(StringUtil.isNotBlank(contexts[0]));
assertTrue(StringUtil.isNotBlank(contexts[1]));
System.out.println(contexts[0]);
}
}
分享到:
评论

相关推荐

    html.rar_html页面_java 静态模板_java 静态页面_java生成html_静态页面

    在IT行业中,尤其是在Web开发领域,Java是一种广泛使用的编程语言,它可以用来生成和处理HTML页面。本主题聚焦于“Java生成HTML静态页面”,这涉及到Java技术如何与HTML模板结合,以实现高效、可维护的网站构建。...

    java+FFmpeg+JavaCV实现无控件HTML页面视频实时预览,录像等,RTSP协议

    本项目利用Java、FFmpeg和JavaCV库,实现了无控件HTML页面的视频实时预览和录像功能,主要涉及到的技术点如下: 1. **RTSP(Real-Time Streaming Protocol)协议**:RTSP是一种应用层协议,用于控制多媒体数据的...

    java 页面静态化

    在传统的Java Web应用中,用户请求到达服务器后,服务器会解析请求,执行相应的Java代码(如Servlet或JSP),通过这些代码与数据库交互,获取数据,然后动态生成HTML页面返回给客户端。这个过程中涉及到了多次I/O...

    html转图片的java代码

    在IT行业中,将HTML页面...最后,这个过程可能会消耗一定的计算资源,特别是在处理大量或大型HTML页面时,因此在设计解决方案时,优化性能也是需要考虑的一个方面。你可以通过缓存、多线程、异步处理等方式来提高效率。

    java生存静态页面

    静态页面是指内容固定不变,不依赖服务器端程序生成的HTML页面。它们通常由HTML、CSS和JavaScript等前端技术组成,浏览器接收到这些文件后直接解析渲染,无需服务器进行额外计算。 在Java中,处理静态页面主要有...

    java源码包---java 源码 大量 实例

     Java实现HTTP连接与浏览,Java源码下载,输入html文件地址或网址,显示页面和HTML源文件,一步步的实现过程请下载本实例的Java源码,代码中包括丰富的注释,对学习有帮助。 Java实现的FTP连接与数据浏览程序 1个...

    JAVA分页实现JAVA+JS+HTML

    1. **AJAX**:使用AJAX异步请求更新页面内容,避免页面刷新,提升用户体验。 2. **事件监听**:监听用户点击分页按钮,发送请求到服务器获取新一页数据。 3. **DOM操作**:接收到服务器响应后,使用JS动态更新DOM...

    html2canvas将HTML内容写入Canvas生成图片 uniapp

    - 为了截取整个页面(包括滚动内容),需要先计算页面的总高度,并滚动到相应位置,然后逐屏截取,最后合并所有截取的图像。 3. **uniAPP截全屏与截取页面内容**: - 截全屏意味着要捕捉到页面的所有可视内容,这...

    JAVA实现模拟导入数据/上传文件进度条

    接着,JSP(JavaServer Pages)是用来动态生成HTML页面的,它可以嵌入Java代码,使得页面和业务逻辑结合。在这个案例中,JSP可以用来创建一个表单,用户可以通过这个表单选择要上传的文件。 jQuery是一个JavaScript...

    活期储蓄计算html实现

    对于初学者来说,这是一个很好的练习,不仅可以巩固HTML、CSS和JS的基础,还能学习到如何处理用户输入、执行计算以及更新页面内容等实用技巧。 总之,"活期储蓄计算html实现"项目是一个综合性的Web开发实例,涵盖了...

    在页面进行简单分页(计算)

    最后,将`currentPageData`传递到JSP页面,用于渲染当前页面的内容。 分页功能不仅提高了用户体验,也优化了服务器性能。通过只加载用户需要的数据,而不是一次性加载所有数据,可以减少服务器负载和网络传输量。在...

    java 使用ITextRenderer将html模块生成pdf文件工具类

    在Java开发中,有时我们需要将HTML内容转换为PDF格式,以便于打印、存档或方便离线阅读。在这个场景下,ITextRenderer库提供了一个强大的解决方案。ITextRenderer是Apache FOP项目的一部分,它允许我们将XSL-FO(一...

    编写jsp页面实现如下界面效果,然后交给servlet计算矩形的周长和面积,并输出结果。

    在本项目中,我们需要使用JavaServer Pages(JSP)技术和Servlet来实现一个简单的Web应用程序,该程序能够接收用户输入的矩形的长度和宽度,计算并显示矩形的周长和面积。首先,我们来看看各个文件的作用。 1. **...

    恋爱计时器html页面

    【恋爱计时器html页面】是一个简单而富有情感的网页应用,主要由HTML、JavaScript(JS)和CSS三部分组成。这个应用的核心功能是计算并显示用户与恋人相处的总时间,为情侣间的甜蜜时光增添一丝浪漫气息。 HTML...

    JAVA 版MPEG播放器

    Java Applet是Java小应用程序,可以直接嵌入HTML页面,由Web浏览器中的Java虚拟机执行。用户只需有支持Java的浏览器,即可在网页上直接运行这个MPEG播放器。 4. **视频解码**:播放MPEG视频需要解码器,将压缩后的...

    java专业课件(专业计算机学习的JAVA课程)

    Java是一种广泛使用的高级编程语言,尤其在企业级应用开发领域占据主导地位。本课程是针对专业计算机学习者设计的JAVA课程,旨在从基础层面逐步深入到高级概念,帮助学习者全面掌握Java编程技能。 首先,Java的基础...

    java计算机二级考试笔记.pdf

    本文档是 Java 计算机二级考试笔记,涵盖了考试的所有内容,包括软件工程基础和 Java 知识。下面是从文档中提取的相关知识点: 一、Applet * Applet 的生命周期 * 向 Applet 传递参数的方式:,age=20&gt; * Applet ...

    java制作360度全景页面的源码和脚本

    Java制作360度全景页面是一项技术性强且富有创意的工作,它主要涉及到图像处理、Web前端开发以及交互设计等多个领域。这项技术广泛应用于虚拟现实、房地产展示、旅游景点介绍等场景,为用户提供沉浸式的视觉体验。 ...

    网上商城-静态页面模版

    虽然静态页面本身不涉及Java,但为了实现一个完整的网上商城,开发者通常会使用Java框架(如Spring Boot或Struts)来构建后端服务,处理用户请求,管理数据库事务,以及实现支付接口等功能。 在实际应用中,这个...

    基于java和jsp编写的一个网页计算器

    JSP(JavaServer Pages)是Java的一个扩展,允许在HTML页面中嵌入Java代码。在JSP中,我们可以创建一个Servlet,该Servlet接收HTTP请求(用户的计算请求),处理它们,然后返回结果。用户点击“=”按钮时,...

Global site tag (gtag.js) - Google Analytics