- 浏览: 2541881 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
nation:
你好,在部署Mesos+Spark的运行环境时,出现一个现象, ...
Spark(4)Deal with Mesos -
sillycat:
AMAZON Relatedhttps://www.godad ...
AMAZON API Gateway(2)Client Side SSL with NGINX -
sillycat:
sudo usermod -aG docker ec2-use ...
Docker and VirtualBox(1)Set up Shared Disk for Virtual Box -
sillycat:
Every Half an Hour30 * * * * /u ...
Build Home NAS(3)Data Redundancy -
sillycat:
3 List the Cron Job I Have>c ...
Build Home NAS(3)Data Redundancy
彩票计算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]);
}
}
主要用到了开源的两个包,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]);
}
}
发表评论
-
Stop Update Here
2020-04-28 09:00 310I will stop update here, and mo ... -
NodeJS12 and Zlib
2020-04-01 07:44 468NodeJS12 and Zlib It works as ... -
Docker Swarm 2020(2)Docker Swarm and Portainer
2020-03-31 23:18 361Docker Swarm 2020(2)Docker Swar ... -
Docker Swarm 2020(1)Simply Install and Use Swarm
2020-03-31 07:58 364Docker Swarm 2020(1)Simply Inst ... -
Traefik 2020(1)Introduction and Installation
2020-03-29 13:52 328Traefik 2020(1)Introduction and ... -
Portainer 2020(4)Deploy Nginx and Others
2020-03-20 12:06 422Portainer 2020(4)Deploy Nginx a ... -
Private Registry 2020(1)No auth in registry Nginx AUTH for UI
2020-03-18 00:56 428Private Registry 2020(1)No auth ... -
Docker Compose 2020(1)Installation and Basic
2020-03-15 08:10 364Docker Compose 2020(1)Installat ... -
VPN Server 2020(2)Docker on CentOS in Ubuntu
2020-03-02 08:04 444VPN Server 2020(2)Docker on Cen ... -
Buffer in NodeJS 12 and NodeJS 8
2020-02-25 06:43 376Buffer in NodeJS 12 and NodeJS ... -
NodeJS ENV Similar to JENV and PyENV
2020-02-25 05:14 465NodeJS ENV Similar to JENV and ... -
Prometheus HA 2020(3)AlertManager Cluster
2020-02-24 01:47 413Prometheus HA 2020(3)AlertManag ... -
Serverless with NodeJS and TencentCloud 2020(5)CRON and Settings
2020-02-24 01:46 330Serverless with NodeJS and Tenc ... -
GraphQL 2019(3)Connect to MySQL
2020-02-24 01:48 242GraphQL 2019(3)Connect to MySQL ... -
GraphQL 2019(2)GraphQL and Deploy to Tencent Cloud
2020-02-24 01:48 443GraphQL 2019(2)GraphQL and Depl ... -
GraphQL 2019(1)Apollo Basic
2020-02-19 01:36 320GraphQL 2019(1)Apollo Basic Cl ... -
Serverless with NodeJS and TencentCloud 2020(4)Multiple Handlers and Running wit
2020-02-19 01:19 306Serverless with NodeJS and Tenc ... -
Serverless with NodeJS and TencentCloud 2020(3)Build Tree and Traverse Tree
2020-02-19 01:19 310Serverless with NodeJS and Tenc ... -
Serverless with NodeJS and TencentCloud 2020(2)Trigger SCF in SCF
2020-02-19 01:18 285Serverless with NodeJS and Tenc ... -
Serverless with NodeJS and TencentCloud 2020(1)Running with Component
2020-02-19 01:17 302Serverless with NodeJS and Tenc ...
相关推荐
在IT行业中,尤其是在Web开发领域,Java是一种广泛使用的编程语言,它可以用来生成和处理HTML页面。本主题聚焦于“Java生成HTML静态页面”,这涉及到Java技术如何与HTML模板结合,以实现高效、可维护的网站构建。...
本项目利用Java、FFmpeg和JavaCV库,实现了无控件HTML页面的视频实时预览和录像功能,主要涉及到的技术点如下: 1. **RTSP(Real-Time Streaming Protocol)协议**:RTSP是一种应用层协议,用于控制多媒体数据的...
在传统的Java Web应用中,用户请求到达服务器后,服务器会解析请求,执行相应的Java代码(如Servlet或JSP),通过这些代码与数据库交互,获取数据,然后动态生成HTML页面返回给客户端。这个过程中涉及到了多次I/O...
在IT行业中,将HTML页面...最后,这个过程可能会消耗一定的计算资源,特别是在处理大量或大型HTML页面时,因此在设计解决方案时,优化性能也是需要考虑的一个方面。你可以通过缓存、多线程、异步处理等方式来提高效率。
静态页面是指内容固定不变,不依赖服务器端程序生成的HTML页面。它们通常由HTML、CSS和JavaScript等前端技术组成,浏览器接收到这些文件后直接解析渲染,无需服务器进行额外计算。 在Java中,处理静态页面主要有...
Java实现HTTP连接与浏览,Java源码下载,输入html文件地址或网址,显示页面和HTML源文件,一步步的实现过程请下载本实例的Java源码,代码中包括丰富的注释,对学习有帮助。 Java实现的FTP连接与数据浏览程序 1个...
1. **AJAX**:使用AJAX异步请求更新页面内容,避免页面刷新,提升用户体验。 2. **事件监听**:监听用户点击分页按钮,发送请求到服务器获取新一页数据。 3. **DOM操作**:接收到服务器响应后,使用JS动态更新DOM...
- 为了截取整个页面(包括滚动内容),需要先计算页面的总高度,并滚动到相应位置,然后逐屏截取,最后合并所有截取的图像。 3. **uniAPP截全屏与截取页面内容**: - 截全屏意味着要捕捉到页面的所有可视内容,这...
接着,JSP(JavaServer Pages)是用来动态生成HTML页面的,它可以嵌入Java代码,使得页面和业务逻辑结合。在这个案例中,JSP可以用来创建一个表单,用户可以通过这个表单选择要上传的文件。 jQuery是一个JavaScript...
对于初学者来说,这是一个很好的练习,不仅可以巩固HTML、CSS和JS的基础,还能学习到如何处理用户输入、执行计算以及更新页面内容等实用技巧。 总之,"活期储蓄计算html实现"项目是一个综合性的Web开发实例,涵盖了...
最后,将`currentPageData`传递到JSP页面,用于渲染当前页面的内容。 分页功能不仅提高了用户体验,也优化了服务器性能。通过只加载用户需要的数据,而不是一次性加载所有数据,可以减少服务器负载和网络传输量。在...
在Java开发中,有时我们需要将HTML内容转换为PDF格式,以便于打印、存档或方便离线阅读。在这个场景下,ITextRenderer库提供了一个强大的解决方案。ITextRenderer是Apache FOP项目的一部分,它允许我们将XSL-FO(一...
在本项目中,我们需要使用JavaServer Pages(JSP)技术和Servlet来实现一个简单的Web应用程序,该程序能够接收用户输入的矩形的长度和宽度,计算并显示矩形的周长和面积。首先,我们来看看各个文件的作用。 1. **...
【恋爱计时器html页面】是一个简单而富有情感的网页应用,主要由HTML、JavaScript(JS)和CSS三部分组成。这个应用的核心功能是计算并显示用户与恋人相处的总时间,为情侣间的甜蜜时光增添一丝浪漫气息。 HTML...
Java Applet是Java小应用程序,可以直接嵌入HTML页面,由Web浏览器中的Java虚拟机执行。用户只需有支持Java的浏览器,即可在网页上直接运行这个MPEG播放器。 4. **视频解码**:播放MPEG视频需要解码器,将压缩后的...
Java是一种广泛使用的高级编程语言,尤其在企业级应用开发领域占据主导地位。本课程是针对专业计算机学习者设计的JAVA课程,旨在从基础层面逐步深入到高级概念,帮助学习者全面掌握Java编程技能。 首先,Java的基础...
本文档是 Java 计算机二级考试笔记,涵盖了考试的所有内容,包括软件工程基础和 Java 知识。下面是从文档中提取的相关知识点: 一、Applet * Applet 的生命周期 * 向 Applet 传递参数的方式:,age=20> * Applet ...
Java制作360度全景页面是一项技术性强且富有创意的工作,它主要涉及到图像处理、Web前端开发以及交互设计等多个领域。这项技术广泛应用于虚拟现实、房地产展示、旅游景点介绍等场景,为用户提供沉浸式的视觉体验。 ...
虽然静态页面本身不涉及Java,但为了实现一个完整的网上商城,开发者通常会使用Java框架(如Spring Boot或Struts)来构建后端服务,处理用户请求,管理数据库事务,以及实现支付接口等功能。 在实际应用中,这个...
JSP(JavaServer Pages)是Java的一个扩展,允许在HTML页面中嵌入Java代码。在JSP中,我们可以创建一个Servlet,该Servlet接收HTTP请求(用户的计算请求),处理它们,然后返回结果。用户点击“=”按钮时,...