导航:首页 > 编程语言 > java读取html文件

java读取html文件

发布时间:2022-12-11 06:53:38

java项目下读取html文件

String projPath = System.getProperty("user.dir"); 获取到工程项目的根目录。
例如 项目为Test,在D盘的Java目录下,projPath 就是 "D:\Java\Test"

然后再往后加你的项目文件夹下html文件的相对路径。

⑵ 怎么访问java里的html文件

eclipse:
localhost
:8080:项目名:WebContent/html文件名,如过放在其他文件包里面请在文件名外面加上文件包名
MyEclipse
:localhost:8080:项目名:WebRoot/html文件名,如过放在其他文件包里面请在文件名外面加上文件包名

⑶ java怎样读取html文件

java读取html文件跟读取普通文件一样,都是使用输入输出流,但是java读取html文件之后还需要解析,使用Jsoup对html进行解析。下面是一个java读取带表格的任意html文件,并把html文件转换成excel的例子。

要求:要求能够实现给出任意带table表格的html文件,生成与表格相同内容的excel文件,附件可以作为测试文件,提供给定的roster.html文件,通过java代码,实现生成与html页面的table相同样式的roster.xls文件。

首先看roster.html:

importjava.io.BufferedReader;
importjava.io.File;
importjava.io.FileReader;
importjava.io.IOException;
importjxl.Workbook;
importjxl.write.Label;
importjxl.write.WritableCellFormat;
importjxl.write.WritableFont;
importjxl.write.WritableSheet;
importjxl.write.WritableWorkbook;
importjxl.write.WriteException;
importjxl.write.biff.RowsExceededException;
importorg.jsoup.Jsoup;
importorg.jsoup.nodes.Document;
importorg.jsoup.nodes.Element;
importorg.jsoup.select.Elements;
publicclassHTMLTOExcel{
publicstaticvoidmain(Stringargs[])throwsIOException{
///读取classpath目录下面的路径
Stringpath=HTMLTOExcel.class.getResource("/").getPath();
path+="roster.html";
toExcel(path,"roster");
}
//得到Document并且设置编码格式
publicstaticDocumentgetDoc(StringfileName)throwsIOException{
FilemyFile=newFile(fileName);
Documentdoc=Jsoup.parse(myFile,"GBK","");
returndoc;
}
///这个方法用于根据trs行数和sheet画出整个表格
publicstaticvoidmergeColRow(Elementstrs,WritableSheetsheet)throwsRowsExceededException,WriteException{
int[][]rowhb=newint[300][50];
for(inti=0;i<trs.size();i++){
Elementtr=trs.get(i);
Elementstds=tr.getElementsByTag("td");

intrealColNum=0;
for(intj=0;j<tds.size();j++){
Elementtd=tds.get(j);
if(rowhb[i][realColNum]!=0){
realColNum=getRealColNum(rowhb,i,realColNum);
}
introwspan=1;
intcolspan=1;
if(td.attr("rowspan")!=""){
rowspan=Integer.parseInt(td.attr("rowspan"));
}
if(td.attr("colspan")!=""){
colspan=Integer.parseInt(td.attr("colspan"));
}
Stringtext=td.text();
drawMegerCell(rowspan,colspan,sheet,realColNum,i,text,rowhb);
realColNum=realColNum+colspan;
}

}
}
///这个方法用于根据样式画出单元格,并且根据rowpan和colspan合并单元格
publicstaticvoiddrawMegerCell(introwspan,intcolspan,WritableSheetsheet,intrealColNum,intrealRowNum,Stringtext,int[][]rowhb)throwsRowsExceededException,WriteException{
for(inti=0;i<rowspan;i++){
for(intj=0;j<colspan;j++){
if(i!=0||j!=0){
text="";
}
Labellabel=newLabel(realColNum+j,realRowNum+i,text);
WritableFontcountents=newWritableFont(WritableFont.TIMES,10);//设置单元格内容,字号12
WritableCellFormatcellf=newWritableCellFormat(countents);
cellf.setAlignment(jxl.format.Alignment.CENTRE);//把水平对齐方式指定为居中
cellf.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);//把垂直对齐方式指定为居
label.setCellFormat(cellf);
sheet.addCell(label);
rowhb[realRowNum+i][realColNum+j]=1;
}
}
sheet.mergeCells(realColNum,realRowNum,realColNum+colspan-1,realRowNum+rowspan-1);
}
publicstaticintgetRealColNum(int[][]rowhb,inti,intrealColNum){
while(rowhb[i][realColNum]!=0){
realColNum++;
}
returnrealColNum;
}
///根据colgroups设置表格的列宽
publicstaticvoidsetColWidth(Elementscolgroups,WritableSheetsheet){
if(colgroups.size()>0){
Elementcolgroup=colgroups.get(0);
Elementscols=colgroup.getElementsByTag("col");
for(inti=0;i<cols.size();i++){
Elementcol=cols.get(i);
Stringstrwd=col.attr("width");
if(col.attr("width")!=""){
intwd=Integer.parseInt(strwd);
sheet.setColumnView(i,wd/8);
}

}

}
}
//toExcel是根据html文件地址生成对应的xls
publicstaticvoidtoExcel(StringfileName,StringexcelName)throwsIOException{
Documentdoc=getDoc(fileName);
Stringtitle=doc.title();
///得到样式,以后可以根据正则表达式解析css,暂且没有找到cssparse
Elementsstyle=doc.getElementsByTag("style");
///得到Table,demo只演示输入一个table,以后可以用循环遍历tables集合输入所有table
Elementstables=doc.getElementsByTag("TABLE");
if(tables.size()==0){
return;
}
Elementtable=tables.get(0);
//得到所有行
Elementstrs=table.getElementsByTag("tr");
///得到列宽集合
Elementscolgroups=table.getElementsByTag("colgroup");

try{
//文件保存到classpath目录下面
Stringpath=HTMLTOExcel.class.getResource("/").getPath();
path+=excelName+".xls";
System.out.println(path);
WritableWorkbookbook=Workbook.createWorkbook(newFile(path));
WritableSheetsheet=book.createSheet("人事关系",0);
setColWidth(colgroups,sheet);
mergeColRow(trs,sheet);
book.write();
book.close();
}catch(RowsExceededExceptione){
e.printStackTrace();
}catch(WriteExceptione){
e.printStackTrace();
}
}
}

解析html文件的例子文档地址:http://blog.csdn.net/androidwuyou/article/details/52636821

⑷ java读取html文件内容显示在jsp中出现乱码

你试下读取的时候用utf-8的格式来读,然后设置request和response的charset为utf-8,应该就可以了.

⑸ java获取html内的内容

简单实现:
HtmlRequest类的内容:
[java] view plain
package com.capinfotech.net;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;

public class HtmlRequest {

public static void main(String[] args) throws IOException {
URL url = new URL("http://www.163.com/");
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
InputStream inputStream = conn.getInputStream(); //通过输入流获得网站数据
byte[] getData = readInputStream(inputStream); //获得网站的二进制数据
String data = new String(getData, "gb2312");
System.out.println(data);

}

public static byte[] readInputStream(InputStream inputStream) throws IOException {
byte[] buffer = new byte[1024];
int len = 0;
ByteArrayOutputStream bos = new ByteArrayOutputStream();
while((len = inputStream.read(buffer)) != -1) {
bos.write(buffer, 0, len);
}

bos.close();
return bos.toByteArray();
}

}
这样就能获得http://www.163.com的内容,在控制台会打印输出

⑹ java以流的形式读取html文件,再输出为excel文件

给你个思路吧,可以自己完成,你描述的所谓的html其实是json数据,遍历json方法有N种,第三方的工具也很多,比如fastJson,gson,jackson等等,基本上几句话搞定;
另外你还要将解析出来的值保存到excel中,可以使用poi这个工具,封装了操作excel表的基本操作方法。祝你成功~

⑺ java程序怎么读取html网页

步骤:

一、使用java.net包下的URL类,可以将一个网页(链接)封装成一个URL对象。

二、URL对象有一个openStream()方法,使用该方法可以获取该网页的输入流,我们可以通过读取输入流的方式获得网页的内容,并通过输出流写入HTML文件中。

⑻ java获取html

Java访问网络url,获取网页的html代码
方式一:
一是使用URL类的openStream()方法:
openStream()方法与制定的URL建立连接并返回InputStream类的对象,以从这一连接中读取数据;
openStream()方法只能读取网络资源。
二是使用URL类的openConnection()方法:
openConnection()方法会创建一个URLConnection类的对象,此对象在本地机和URL指定的远程节点建立一条HTTP协议的数据通道,可进行双向数据传输。类URLConnection提供了很多设置和获取连接参数的方法,最常用到的是getInputStream()和getOutputStream()方法。
openConnection()方法既能读取又能发送数据。
列如:
public static void main(String args[]) throws Exception {
try {
//输入url路径
URL url = new URL("url路径"); InputStream in =url.openStream(); InputStreamReader isr = new InputStreamReader(in); BufferedReader bufr = new BufferedReader(isr); String str; while ((str = bufr.readLine()) != null) { System.out.println(str); } bufr.close(); isr.close(); in.close(); } catch (Exception e) { e.printStackTrace(); } }

⑼ 求JAVA读取html文件table里面的内容!

public classReadHtml2 { publicstatic void main(String[] args) throws IOException {//String strUrl=" https://passport..com/?reg&tpl=mn"; /// URL url=new URL(strUrl); File f=new File("fortest.htm"); //输入流 //InputStreamReader isr=newInputStreamReader(url.openStream()); InputStreamReader isr1=newInputStreamReader(new FileInputStream(f)); BufferedReader br=new BufferedReader(isr1); //获取html转换成String String s; String AllContent=""; while((s=br.readLine())!=null) { AllContent=AllContent+s; } //使用后HTML Parser 控件 Parser myParser; NodeList nodeList = null; myParser =Parser.createParser(AllContent, "utf-8"); NodeFilter tableFilter = newNodeClassFilter(TableTag.class); OrFilter lastFilter = newOrFilter(); lastFilter.setPredicates(newNodeFilter[] { tableFilter }); try { //获取标签为table的节点列表 nodeList =myParser.parse(lastFilter); //循环读取每个table for (int i = 0; i <=nodeList.size(); i++) { if (nodeList.elementAt(i)instanceof TableTag) { TableTag tag = (TableTag)nodeList.elementAt(i); TableRow[] rows =tag.getRows(); System.out.println("----------------------table "+i+"--------------------------------"); //循环读取每一行 for (int j = 0; j <rows.length; j++) { TableRow tr =(TableRow) rows[j]; TableColumn[] td =tr.getColumns(); //读取每行的单元格内容 for (int k = 0; k< td.length; k++) { System.out.println(td[k].getStringText());//(按照自己需要的格式输出) } } } } } catch (ParserException e) { e.printStackTrace(); }}}

⑽ java如何解析html文档

importjava.io.*;
importjava.util.*;
importjavax.swing.text.*;
importjavax.swing.text.html.*;
importjavax.swing.text.html.parser.*;
importjavax.swing.text.html.HTMLEditorKit.ParserCallback;
{//继承ParserCallback,解析结果驱动这些回调方法
protectedStringbase;
protectedbooleanisImg=false;
protectedbooleanisParagraph=false;
protectedstaticVector<String>element=newVector<String>();
=newString();
publicParser(){
}
(){
returnparagraphText;
}
publicvoidhandleComment(char[]data,intpos){
}
publicvoidhandleEndTag(HTML.Tagt,intpos){
if(t==HTML.Tag.P){
if(isParagraph){
isParagraph=false;
}
}elseif(t==HTML.Tag.IMG){
if(isImg){
isImg=false;
}
}
}
publicvoidhandleError(StringerrorMsg,intpos){
}
publicvoidhandleSimpleTag(HTML.Tagt,MutableAttributeSeta,intpos){
handleStartTag(t,a,pos);
}
publicvoidhandleStartTag(HTML.Tagt,MutableAttributeSeta,intpos){
if(t==HTML.Tag.P){
isParagraph=true;
}elseif((t==HTML.Tag.IMG)){
Stringsrc=(String)a.getAttribute(HTML.Attribute.SRC);
if(src!=null){
element.addElement(src);
isImg=true;
}
}
}
publicvoidhandleText(char[]data,intpos){
if(isParagraph){
StringtempParagraphText=newString(data);
if(paragraphText!=null){
element.addElement(tempParagraphText);
;
}
}
}

privatestaticvoidstartParse(StringsHtml){
try{
ParserDelegatorps=newParserDelegator();//负责每次在调用其parse方法时启动一个新的DocumentParser
HTMLEditorKit.ParserCallbackparser=newParser();//解析结果驱动这些回调方法。
ps.parse(newStringReader(sHtml),parser,true);//解析给定的流并通过解析的结果驱动给定的回调。
//System.out.println(getParagraphText());
Vectorlink=element;
for(inti=0;i<link.size();i++){
System.out.println("----haha-----");
System.out.println(link.get(i));
}
}catch(Exceptione){
e.printStackTrace();
}
}
publicstaticvoidmain(Stringargs[]){
try{
Stringfilename="D://blogbaby.htm";
BufferedReaderbrd=newBufferedReader(newFileReader(filename));
char[]str=newchar[50000];
brd.read(str);
StringsHtml=newString(str);
startParse(sHtml);
}catch(Exceptione){
e.printStackTrace();
}
}
}

阅读全文

与java读取html文件相关的资料

热点内容
相机卡满了没文件夹 浏览:747
如何批量快速压缩视频 浏览:432
我的世界如何加入ice服务器 浏览:873
兄弟cnc编程说明书 浏览:204
php闪电入门教程学习 浏览:152
金岳霖逻辑pdf 浏览:938
linuxtomcat线程 浏览:77
pboc长度加数据加密 浏览:187
英雄联盟国际服手游怎么下安卓 浏览:297
程序员的思路 浏览:234
只能用命令获得的四种方块 浏览:358
怎么用命令方块防止开创造 浏览:807
扫描版的pdf 浏览:790
编程猫怎样做3d游戏 浏览:207
怎么查找云服务器上的ftp 浏览:156
我的世界服务器如何注册账号 浏览:934
统计英文字符python 浏览:424
linux信息安全 浏览:910
压缩机接线柱爆 浏览:1001
程序员自主创业 浏览:586