package step1; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.safety.Whitelist; public class Task { //通过filePath文件路径获取Docment对象 public Document getDoc(String filePath) throws IOException{ /********** Begin **********/ return null; /********** End **********/ } /** * 获取清理后的信息 * @param doc * @return */ public List<String> cleanHTML(Document doc){ /********** Begin **********/ return null; /********** End **********/ } } 填充代码
时间: 2025-05-20 07:29:03 浏览: 30
### 使用Java和Jsoup解析与清理HTML内容的解决方案
在Java中使用Jsoup库可以通过多种方式解析HTML文档,并对其内容进行提取、修改或清理。以下是详细的说明和代码示例:
#### 1. 解析本地HTML文件
要从本地文件路径加载HTML文档,可以使用`File`对象作为输入源传递给`Jsoup.parse()`方法。
```java
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import java.io.File;
public class HtmlParser {
public static void main(String[] args) throws Exception {
// 定义HTML文件路径
File inputFile = new File("path/to/your/html/file.html");
// 设置编码格式为UTF-8,并指定基础URL用于相对链接解析
Document document = Jsoup.parse(inputFile, "UTF-8", "http://example.com/");
System.out.println(document.title()); // 输出HTML文档标题
}
}
```
此段代码展示了如何读取位于指定路径下的HTML文件并创建一个`Document`对象[^2]。
#### 2. 清理HTML内容
为了防止XSS攻击或其他潜在的安全隐患,通常需要对用户提交的内容进行过滤。Jsoup提供了内置工具类`Whitelist`来帮助开发者制定允许保留下来的标签及属性白名单规则集。
下面是一个简单的例子展示怎样基于预定义好的安全配置项执行净化过程:
```java
import org.jsoup.Jsoup;
import org.jsoup.safety.Cleaner;
import org.jsoup.safety.Whitelist;
public class HtmlCleaner {
public static void cleanHtml(String dirtyMarkup){
Whitelist whitelist = Whitelist.simpleText(); // 创建只允许纯文本的基本白名单
Cleaner cleaner = new Cleaner(whitelist);
org.jsoup.nodes.Document context = Jsoup.parse(dirtyMarkup);
// 应用清洁器得到干净的结果
org.jsoup.nodes.Document cleanedDoc = cleaner.clean(context);
String safeOutput = cleanedDoc.body().html();
System.out.println(safeOutput); // 打印清理后的HTML片段
}
public static void main(String[] args){
String unsafeInput = "<script>alert('XSS')</script><b>bold</b>";
cleanHtml(unsafeInput);
}
}
```
在这个实例里,我们采用了最严格的模式——仅接受基本文字节点(`simpleText`),任何其他标记都会被移除掉[^5]。
---
### 总结
以上介绍了两种核心技能:一是借助Jsoup从磁盘上的物理位置导入网页资源;二是运用其提供的安全性机制保障最终呈现出来的信息不会携带恶意脚本威胁。这两个部分结合起来构成了完整的处理链条,适用于大多数涉及Web抓取的应用场景下初步的数据准备工作流。
阅读全文
相关推荐















大致讲解一下代码:6.BuyPhoneServlet: package Session01; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; import java.util.ArrayList; @WebServlet("/buyPhoneServlet") public class BuyPhoneServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType("text/html;charset=utf-8"); PrintWriter out=resp.getWriter(); String idstr=req.getParameter("id"); int id=Integer.parseInt(idstr); ArrayList ckDB= PhoneDb.getAll(); Phone ck=ckDB.get(id-1); out.println("您购买的"+ck.getName()+"手机下单成功。"); out.println("继续选购"); } }



