1. 需求
用户上传一个微信链接,能够从链接中解析HTML并保存在自己服务器中。要求HTML包含标题、作者和来源,并且保留文章的排版格式。
2. 实现方案
通过Jsoup访问URL,获得DOM,然后解析出标题、正文等。由于公众号文章的css样式都相同,所以将style保存在服务器中,通过 <link href="…">的方式引入css文件。
文章中的图片先下载到服务器当中,然后通过String替换,将旧图片地址替换。
最终的效果图:
3. 实现代码
先引入Jsoup依赖
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.10.2</version>
</dependency>
Utile类
import edu.zjut.yubc.Model.Article;
import edu.zjut.yubc.exception.ArticleException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import org.springframework.stereotype.Component;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.HashMap;
import java.util.Map;
@Component
public class HtmlUtil {
private static final IdUtil idUtil = new IdUtil();
public static void main(String[] args) throws Exception {
//这里的article类是业务需要,HTML保存在content字段中
Article html = getHtml("https://mp.weixin.qq.com/s/xDix1g2EY6ib4lxKe97OKQ");
File txt=new File("D:/java/test.html");
if(!txt.exists()