Java通过URL获取公众号文章生成HTML的方法

  

说明:通过公众号URL获取的内容,文字可以正常显示,但是图片存在跨域访问的问题,微信不允许跨域访问公众号图片,所以需要将公众号图片从存入本地后,再上传至OSS,然后把HTML中的图片全部替换为自己的OSS地址就可以了

  

这里就需要在后台对HTML进行DOM的解析,需要用的Jsoup

        & lt; dependency>   & lt; groupId> com.aliyun.oss   & lt; artifactId> aliyun-sdk-oss   & lt; version> 2.2.3      & lt;/dependency>   & lt; dependency>   & lt; groupId> org.jsoup   & lt; artifactId> jsoup   & lt; version> 1.9.2   & lt;/dependency>   之前      控制器

        包com.iueang.controller;      进口java.io.File;   进口java.util.HashMap;   进口java.util.Map;      进口org.jsoup.Jsoup;   进口org.jsoup.nodes.Document;   进口org.jsoup.nodes.Element;   进口org.jsoup.select.Elements;   进口org.springframework.stereotype.Controller;   进口org.springframework.web.bind.annotation.RequestMapping;   进口org.springframework.web.bind.annotation.ResponseBody;      进口com.iueang.util.DownLoadImg;   进口com.iueang.util.GetBody;   进口com.iueang.util.OssUtil2;   进口com.iueang.util.UrlUtil;   @ controller   公开课TestUrl {      @RequestMapping (“tohtml”)   公共字符串tohtml () {   返回“html/index . html”;   }   @RequestMapping (“getHtml”)   @ResponseBody   公共Map<字符串,String>getHtml(字符串url) {//获取url文章生成文本   字符串html=UrlUtil.getAccess (url);   字符串reg=" & lt; html> (* & # 63;) & lt;/html>”;   头=GetBody字符串。getSubUtilSimple (html、注册);   字符串HTTPHOST=" http://yueang2.oss-cn-qingdao.aliyuncs.com/testimg/";   字符串newsBody=头;   文档doc=Jsoup.parse (newsBody);   元素png=doc.select (“img [data-src]”);   System.out.println (png);   (元素元素:png) {//获取图片地址   字符串imgUrl=element.attr (“data-src”);//下载图片到本地   字符串文件名=DownLoadImg.downloadPicture (imgUrl);   文件文件=新文件(“D: \ \ m2 \ \”+文件名);//上传至oss   布尔标志=OssUtil2。uploadFileToOss(文件,“testimg/?文件名);   如果(国旗){   file.delete ();   }   字符串newsrc=https://www.yisu.com/zixun/HTTPHOST +文件名;   元素。attr (" src ", newsrc);   }   newsBody=doc.toString ();   System.out.println (newsBody);   String> Map<字符串;地图=new HashMap<字符串,String> ();   地图。把(“resultHtml”, newsBody);   返回地图;      }   }   之前      

util工具类

  

GetBody类         包com.iueang.util;      进口java.util.regex.Matcher;   进口java.util.regex.Pattern;      公开课GetBody {      公共静态字符串getSubUtilSimple (html字符串,字符串注册){   模式模式=Pattern.compile (reg);//匹配的模式   匹配器m=pattern.matcher (html);   而(m.find ()) {   返回m.group (1);   }   返回";   }      }   之前      

OssUtil类         包com.iueang.util;      进口java.io.File;   进口java.util.HashMap;   进口java.util.Map;      进口com.aliyun.oss.OSSClient;   进口com.aliyun.oss.model.ObjectMetadata;      公开课OssUtil2 {//以下几个参数值必填,参考文章最后文档   静态字符串端点=" http://oss-cn-qingdao.aliyuncs.com ";   静态字符串accessKeyId=" oss获取”;   静态字符串accessKeySecert=" oss获取”;   静态字符串bucketName=" yueang2”;/* *   *上传单个文件到OSS   * @param文件要上传的文件文件对象   * @param objName上传后的文件名,包含文件夹,比如游戏/比赛/用法   * @return   */公共静态布尔uploadFileToOss(文件文件、字符串objName) {   尝试{   OSSClient OSSClient=零;   尝试{   ossClient=new ossClient(端点,accessKeyId, accessKeySecert);   }捕捉(异常e) {   e.printStackTrace ();   }   ObjectMetadata元=new ObjectMetadata ();   ossClient。putObject (bucketName、objName、文件、元);   ossClient.shutdown ();   }捕捉(异常e) {   e.printStackTrace ();   返回错误;   }   返回true;   }   }   之前      

DownLoadImg类      

Java通过URL获取公众号文章生成HTML的方法