jsoup 获取html中body内容_java读取html文件,并获取body中所有的标签以及内容

该段代码展示了如何使用Java的jsoup库来读取HTML文件,并获取body部分的所有标签及其内容。首先,通过FileInputStream和BufferedReader读取文件,然后搜索<body>标签以开始提取内容。在找到</body>标签之前,将每一行内容添加到body变量中。此外,代码还处理了图片的src属性,将相对路径转换为绝对路径。
摘要由CSDN通过智能技术生成

packagecom.lmt.service.file;importjava.io.BufferedReader;importjava.io.File;importjava.io.FileInputStream;importjava.io.InputStreamReader;importjava.io.Reader;importorg.springframework.stereotype.Component;importcom.lmt.config.UrlConstants;

@Componentpublic classParseFile {/*** 解析html文件

*@paramfile

*@return

*/

publicString readHtml(File file){

String body= "";try{

FileInputStream iStream= newFileInputStream(file);

Reader reader= newInputStreamReader(iStream);

BufferedReader htmlReader= newBufferedReader(reader);

String line;boolean found = false;while (!found && (line = htmlReader.readLine()) != null) {if (line.toLowerCase().indexOf("

的前面可能存在空格

found = true;

}

}

found= false;while (!found && (line = htmlReader.readLine()) != null) {if (line.toLowerCase().indexOf("

found= true;

}else{//如果存在图片,则将相对路径转换为绝对路径

String lowerCaseLine =line.toLowerCase();if (lowerCaseLine.contains("src")) {//这里是定义图片的访问路径

String directory = "D:/test";//如果路径名不以反斜杠结尾,则手动添加反斜杠

/*if (!directory.endsWith("\\")) {

directory = directory + "\\";

}*/

//line = line.substring(0, lowerCaseLine.indexOf("src") + 5) + directory + line.substring(lowerCaseLine.indexOf("src") + 5);

/*String filename = extractFilename(line);

line = line.substring(0, lowerCaseLine.indexOf("src") + 5) + directory + filename + line.substring(line.indexOf(filename) + filename.length());*/

//如果该行存在多个元素,则分行进行替代

String[] splitLines = line.split("

for (int i = 0; i < splitLines.length; i++) {if (splitLines[i].toLowerCase().startsWith("src")) {

splitLines[i]= splitLines[i].substring(0, splitLines[i].toLowerCase().indexOf("src") + 5)+directory+ splitLines[i].substring(splitLines[i].toLowerCase().indexOf("src") + 5);

}

}//最后进行拼接

line = "";for (int i = 0; i < splitLines.length - 1; i++) { //循环次数要-1,因为最后一个字符串后不需要添加

line = line + splitLines[i] + "

}

line= line + splitLines[splitLines.length - 1];

}

body= body + line + "\n";

}

}

htmlReader.close();//System.out.println(body);

}catch(Exception e) {

e.printStackTrace();

}returnbody;

}/***

*@paramhtmlLine 一行html片段,包含元素

*@return文件名*/

public staticString extractFilename(String htmlLine) {int srcIndex = htmlLine.toLowerCase().indexOf("src=");if (srcIndex == -1) { //图片不存在,返回空字符串

return "";

}else{

String htmlSrc= htmlLine.substring(srcIndex + 4);char splitChar = '\"'; //默认为双引号,但也有可能为单引号

if (htmlSrc.charAt(0) == '\'') {

splitChar= '\'';

}

String[] firstSplit=htmlSrc.split(String.valueOf(splitChar));

String path= firstSplit[1]; //第0位为空字符串

String[] secondSplit = path.split("[/\\\\]"); //匹配正斜杠或反斜杠

return secondSplit[secondSplit.length - 1];

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值