利用jsoup爬虫优酷、土豆等视频网站rss利用solr创建索引

news/2024/5/20 11:32:14/文章来源:https://blog.csdn.net/beijing20120926/article/details/17139573

1、前提:

了解jsoup、solr等相关的技术、会搭建solr

2、我将爬虫的网站都写在一个xml中,所以先要解析这个xml,得到其网址,然后定时去爬虫

[java] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. package com.tmzs.pc.jsoup;  
  2.   
  3. import java.io.File;  
  4. import java.util.ArrayList;  
  5. import java.util.Iterator;  
  6. import java.util.List;  
  7. import java.util.Timer;  
  8.   
  9. import org.dom4j.Document;  
  10. import org.dom4j.Element;  
  11. import org.dom4j.io.SAXReader;  
  12.   
  13. import com.tmzs.pc.entity.InfoXml;  
  14. /** 
  15.  * @功能 定时器,定时的爬虫 
  16.  * @author admin 
  17.  * 
  18.  */  
  19. public class TestTimer {  
  20.     public static final List<InfoXml> infoList = new ArrayList<InfoXml>() ;  
  21.     public static void main(String[] args) throws Exception {  
  22.         parseXml() ;  
  23.         MyTask myTask = new MyTask();  
  24.         Timer timer = new Timer();  
  25.         timer.schedule(myTask, 40001000*60*5);   //4000后执行,每次间隔1000*60*5=5分钟  
  26.     }  
  27.   
  28.     /** 
  29.      * @功能 解析XML 
  30.      * @throws Exception 
  31.      */  
  32.     private static void parseXml() throws Exception {  
  33.         SAXReader reader = new SAXReader();    
  34.         Document  document = reader.read(new File("e:/Channel.xml"));    
  35.         Element root = document.getRootElement();  //获取根节点  
  36.         List<Element> nodes = root.elements("tree");    
  37.           
  38.         for (Iterator it = nodes.iterator(); it.hasNext();) {    
  39.             Element tree = (Element) it.next();    
  40.             List<Element> channels = tree.elements("channel");    
  41.               
  42.             //Channel  
  43.             for (Iterator ite = channels.iterator(); ite.hasNext();) {    
  44.                 Element channel = (Element) ite.next();    
  45.                 InfoXml ix = new InfoXml() ;  
  46.                 ix.setTreeName(tree.attributeValue("name")) ;  
  47.                 ix.setTreeOpen(Integer.parseInt(tree.attributeValue("open"))) ;  
  48.                   
  49.                 ix.setChannelName(channel.element("name").getTextTrim()) ;  
  50.                 ix.setChannelLink(channel.element("link").getTextTrim()) ;  
  51.                 ix.setChannelType(channel.element("type").getTextTrim()) ;  
  52.                 ix.setChannelAllNewsNum(Integer.parseInt(channel.element("AllNewsNum").getTextTrim())) ;  
  53.                 ix.setChannelMaxNewsNum(Integer.parseInt(channel.element("MaxNewsNum").getTextTrim())) ;  
  54.                 ix.setChannelTTU(Integer.parseInt(channel.element("TTU").getTextTrim())) ;  
  55.                 ix.setChannelUnReadNewsNum(Integer.parseInt(channel.element("UnReadNewsNum").getTextTrim())) ;  
  56.                 infoList.add(ix) ;  
  57.             }   
  58.               
  59.         }   
  60.   
  61.         for(int i=0;i<infoList.size();i++){  
  62.             InfoXml ix = infoList.get(i) ;  
  63.             System.out.println("getTreeName="+ix.getTreeName()+",getChannelName="+ix.getChannelName()  
  64.                     +",channelType="+ix.getChannelType()+",link="+ix.getChannelLink());  
  65.         }  
  66.           
  67.     }  
  68. }  

3、执行定时器的方法,即爬虫。但是要考虑一个问题,爬虫的内容是否会重复。这里我是弄了连个Map,将爬虫的视频标题(title)放入Map里面作为Key。然后做了一个循环,当10次后爬虫的数据的title在Map里面没有,就清楚Map,说的不好,请看代码:

还有一点就是<link>标签得不到,所以我借助了rssjlib.jar

[java] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. package com.tmzs.pc.jsoup;  
  2.   
  3. import java.io.BufferedReader;  
  4. import java.io.IOException;  
  5. import java.io.InputStream;  
  6. import java.io.InputStreamReader;  
  7. import java.io.StringReader;  
  8. import java.net.MalformedURLException;  
  9. import java.net.URL;  
  10. import java.net.URLConnection;  
  11. import java.text.ParseException;  
  12. import java.text.SimpleDateFormat;  
  13. import java.util.Date;  
  14. import java.util.HashMap;  
  15. import java.util.Iterator;  
  16. import java.util.List;  
  17. import java.util.Locale;  
  18. import java.util.Map;  
  19. import java.util.TimerTask;  
  20.   
  21. import org.apache.solr.client.solrj.impl.HttpSolrServer;  
  22. import org.apache.solr.common.SolrInputDocument;  
  23. import org.jsoup.Jsoup;  
  24. import org.jsoup.nodes.Document;  
  25. import org.jsoup.nodes.Element;  
  26. import org.jsoup.select.Elements;  
  27.   
  28. import com.rsslibj.elements.Channel;  
  29. import com.rsslibj.elements.Item;  
  30. import com.rsslibj.elements.RSSReader;  
  31. import com.tmzs.pc.entity.InfoXml;  
  32. import com.tmzs.pc.entity.Video;  
  33. import com.tmzs.pc.jdbc.JdbcAction;  
  34.   
  35. /** 
  36.  * @功能 爬虫 
  37.  * @author admin 
  38.  * 
  39.  */  
  40. public class MyTask extends TimerTask{  
  41.     /** 
  42.      * @功能 循环遍历XML 
  43.      */  
  44.     private static Channel channel;    //RSS实体    
  45.     Document doc = null;    
  46.     Map oldMap = new HashMap();       
  47.     Map newMap = new HashMap();   
  48.     int index = 1 ;  
  49.     int oldZeroNum = 0 ;  
  50.     boolean flag = true ;  
  51.     public void run(){  
  52.         List<InfoXml> urls = TestTimer.infoList ;  
  53.               
  54.         int zeroNum = 0 ;  
  55.         for(int j=0;j<urls.size();j++){  
  56.             InfoXml ix = urls.get(j) ;  
  57.             String url = ix.getChannelLink();    
  58.             URL ur;  
  59.             List<Item> items = null ;  
  60.             try {  
  61.                 ur = new URL(url);  
  62.                 InputStream inputstream = ur.openStream();    
  63.                 BufferedReader reader = null;    
  64.                 //由于百度编码不是UTF-8,所以你懂得  
  65.                 if("百度".equals(ix.getTreeName())){  
  66.                     flag = true ;  
  67.                     reader = new BufferedReader(new InputStreamReader(inputstream,"GB2312"));   
  68.                 }else{  
  69.                     flag = false ;  
  70.                     reader = new BufferedReader(new InputStreamReader(inputstream));   
  71.                 }  
  72.                 StringBuilder data = new StringBuilder();    
  73.                 String line = null;    
  74.                 while( (line = reader.readLine()) != null ) {    
  75.                     data.append(line);    
  76.                 }    
  77.                     
  78.                 reader.close();    
  79.                 inputstream.close();    
  80.                 //解析字符串    
  81.                 StringReader read = new StringReader(data.toString());    
  82.                 System.out.println("data.toString()="+data.toString());  
  83.                   
  84.                 doc = Jsoup.parse(data.toString());  
  85.                  
  86.                 // 创建RSS阅读对象的    
  87.                 RSSReader rssReader = new RSSReader();    
  88.                 // 设置读取内容    
  89.                 rssReader.setReader(read);  
  90.                     
  91.                 channel = rssReader.getChannel();   
  92.                 items = channel.getItems();  
  93.             } catch (MalformedURLException e1) {  
  94.                 e1.printStackTrace();  
  95.             } catch (IOException e) {  
  96.                 e.printStackTrace();  
  97.             } catch (electric.xml.ParseException e) {  
  98.                 e.printStackTrace();  
  99.             }    
  100.               
  101.             Elements element = doc.getElementsByTag("channel");  
  102.             Elements elems = doc.getElementsByTag("item");    
  103.             for(int i=0;i<elems.size();i++){  
  104.                 Item item = items.get(i) ;  
  105.                 Element elem = elems.get(i) ;  
  106.                 Elements title = elem.getElementsByTag("title") ;  
  107.                 if(index == 1){  
  108.                     oldMap.put(title.html(), 1) ;  
  109.                     //保存数据  
  110.                     insertData(element,elem,ix,channel,item) ;  
  111.                 }else if(index > 1){  
  112.                     if(oldMap.containsKey(title.html())){  
  113.                         zeroNum ++ ;  
  114.                     }else{  
  115.                         if(!newMap.containsKey(title.html())){  
  116.                             newMap.put(title.html(), 1) ;  
  117.                             insertData(element,elem,ix,channel,item) ;  
  118.                         }  
  119.                     }  
  120.                       
  121.                 }  
  122.             }  
  123.         }  
  124.         //判断是否清楚Map  
  125.         if(zeroNum == 0){  
  126.             oldZeroNum++;  
  127.             if(oldZeroNum == 10){  
  128.                 oldMap.clear();  
  129.                 oldZeroNum = 0;  
  130.                 oldMap = newMap;  
  131.                 newMap.clear();  
  132.             }  
  133.         }  
  134.         index++ ;  
  135.     }  
  136.       
  137.     /** 
  138.      * @功能 保存数据 
  139.      * @param element 
  140.      * @param elem 
  141.      */  
  142.     private void insertData(Elements element, Element elem, InfoXml ix,Channel channel,Item item) {  
  143.         String sourceLink = channel.getLink() ;  
  144.         String itemLink = item.getLink() ;  
  145.           
  146.         Elements sourceTitle = element.get(0).getElementsByTag("title") ;  
  147. //      Elements sourceLink = element.get(0).getElementsByTag("link") ;  
  148.         Elements sourceDesc = element.get(0).getElementsByTag("description") ;  
  149.         Elements sourceImageUrl = element.get(0).getElementsByTag("url") ;  
  150.          
  151.         Elements title = elem.getElementsByTag("title") ;  
  152.         Elements guid = elem.getElementsByTag("guid") ;  
  153.  //     Elements link = elem.getElementsByTag("link") ;  
  154.         Elements description = elem.getElementsByTag("description") ;  
  155.         Elements duration = elem.getElementsByTag("itunes:duration") ;  
  156.         Elements keyword = elem.getElementsByTag("itunes:keywords") ;  
  157.         Elements author = elem.getElementsByTag("author") ;  
  158.         Elements pubDate = elem.getElementsByTag("pubDate") ;  
  159.         Elements enclosure = elem.getElementsByTag("enclosure") ;  
  160.         Elements itemSource = elem.getElementsByTag("source") ;  //条目源,如:百度中新闻来自新闻网  
  161.         String itemFileType = enclosure.attr("type") ;  
  162.         String itemFileLink = enclosure.attr("url") ;  
  163.         SimpleDateFormat sf = new SimpleDateFormat("EEE, dd MMM yyyy hh:mm:ss z",Locale.ENGLISH);  
  164.         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss") ;  
  165.         String itemDate = "";  
  166.         try {  
  167.             if(!flag){  
  168.                 java.util.Date d = sf.parse(pubDate.html());  
  169.                 itemDate = sdf.format(d) ;  
  170.             }else{  
  171.                 itemDate = pubDate.html().replaceAll("T"" ").replaceAll(".000Z""") ;  
  172.             }  
  173.               
  174.         } catch (ParseException e) {  
  175.             e.printStackTrace();  
  176.         }  
  177.         int itemDuration = 0 ;  
  178.         if(!"".equals(duration.html())){  
  179.             itemDuration = parseDate(duration.html()) ;  
  180.         }  
  181.           
  182.         Video v = new Video() ;  
  183.         v.setId(new Date().getTime()+"") ;  
  184.         v.setTypeName(ix.getChannelType()) ;  
  185.         v.setClassName(ix.getTreeName()+"_"+ix.getChannelName()) ;  
  186.           
  187.         v.setSourceDesc(sourceDesc.first().html()) ;  
  188.         if(sourceImageUrl.first()!=null){  
  189.             v.setSourceImageLink(sourceImageUrl.first().html()) ;  
  190.         }else{  
  191.             v.setSourceImageLink("") ;  
  192.         }  
  193.         v.setSourceLink(sourceLink) ;  
  194.         v.setSourceTitle(sourceTitle.first().html()) ;  
  195.           
  196.         v.setItemDate(sdf.format(new Date())) ;             //solr处理时间  
  197.         v.setItemTitle(title.html()) ;  
  198.         v.setItemLink(itemLink) ;  
  199.           
  200.         v.setItemPubDate(itemDate) ;  
  201.           
  202.         v.setItemDesc(description.html()) ;  
  203.         v.setItemAuthor(author.html()) ;  
  204.         v.setItemSource(itemSource.html()) ;  //条目源,如:百度中新闻来自新闻网  
  205.         v.setItemKeyword(keyword.html()) ;  
  206.         v.setItemDuration(itemDuration) ;  
  207.         v.setItemGuid(guid.html()) ;  
  208.         v.setItemFileLink(itemFileLink) ;  
  209.         v.setItemFileType(itemFileType) ;  
  210.           
  211.         v.setState(400) ;  
  212.         writerSolr(v) ;  
  213. //      JdbcAction.insert(v) ;  
  214.     }  
  215.   
  216.     /** 
  217.      * @功能 写进索引 
  218.      */  
  219.     public void writerSolr(Video v) {  
  220.         // TODO Auto-generated method stub  
  221.          try {  
  222.               //获取连接服务  
  223.              HttpSolrServer solrServer= SolrServer.getInstance().getServer();  
  224.               SolrInputDocument doc1 = new SolrInputDocument();  
  225.               doc1.addField("id", v.getId());  
  226.               doc1.addField("typename", v.getTypeName());  
  227.               doc1.addField("classname", v.getClassName());  
  228.               doc1.addField("itemauthor", v.getItemAuthor());  
  229.               doc1.addField("itemdate", v.getItemDate());  
  230.               doc1.addField("itemdesc", v.getItemDesc());  
  231.               doc1.addField("itemduration", v.getItemDuration());  
  232.                 
  233.               doc1.addField("itemfilelink", v.getItemFileLink());  
  234.               doc1.addField("itemfiletype", v.getItemFileType());  
  235.               doc1.addField("itemguid", v.getItemGuid());  
  236.               doc1.addField("itemkeyword", v.getItemKeyword());  
  237.               doc1.addField("itemlink", v.getItemLink());  
  238.                 
  239.               doc1.addField("itempubdate", v.getItemPubDate());  
  240.               doc1.addField("itemsource", v.getItemSource());  
  241.               doc1.addField("itemtitle", v.getItemTitle());  
  242.               doc1.addField("sourcedesc", v.getSourceDesc());  
  243.               doc1.addField("sourceimagelink", v.getSourceImageLink());  
  244.               doc1.addField("sourcelink", v.getSourceLink());  
  245.               doc1.addField("sourcetitle", v.getSourceTitle());  
  246.                 
  247.               solrServer.add(doc1);  
  248.               solrServer.commit();  
  249.         } catch (Exception e) {  
  250.             e.printStackTrace();  
  251.         }  
  252.     }  
  253.       
  254.     /** 
  255.      * @功能 将形如XX:XX的时间转为秒数 
  256.      * @param html 
  257.      * @return 
  258.      */  
  259.     private static int parseDate(String duration) {  
  260.         int itemDuration = 0 ;  
  261.         SimpleDateFormat sdf = new SimpleDateFormat("mm:ss") ;  
  262.         try {  
  263.             Date d = sdf.parse(duration) ;  
  264.             itemDuration = d.getMinutes()*60+d.getSeconds() ;  
  265.         } catch (ParseException e) {  
  266.             e.printStackTrace();  
  267.         }  
  268.         return itemDuration;  
  269.     }  
  270.   
  271.     public static void main(String[] args) throws Exception {  
  272.         SimpleDateFormat sf = new SimpleDateFormat("EEE, dd MMM yyyy hh:mm:ss z",Locale.ENGLISH);  
  273.         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss") ;  
  274.         SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ") ;  
  275.         String itemDate = "";  
  276.         try {  
  277.             java.util.Date d = sf.parse("Mon, 19 Mar 2012 10:36:17 +0800");  
  278.               
  279.             System.out.println(sd.parse("2013-12-04T08:08:45.000Z"));  
  280.             itemDate = sdf.format(d) ;  
  281.         } catch (ParseException e) {  
  282.             e.printStackTrace();  
  283.         }  
  284.         System.out.println(sdf.parse(itemDate));   
  285.     }  
  286. }  

4、爬完之后,在solr页面可以看到

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_820017.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解决此请求已被阻止,因为当用在 GET 请求中时,会将敏感信息透漏给第三方网站的问题...

在ASP.NET MVC项目中&#xff0c;使用AJAX向控制器发送GET请求获取JSON数据时&#xff0c;出现这个错误&#xff1a;"此请求已被阻止&#xff0c;因为当用在 GET 请求中时&#xff0c;会将敏感信息透漏给第三方网站。若要允许 GET 请求&#xff0c;请将 JsonRequestBehavi…

SpringCloud实战--新闻门户网站-李熠-专题视频课程

SpringCloud实战--新闻门户网站—149人已学习 课程介绍 本套课程从实战为出发点&#xff0c;带领大家深入了解SpringCloud&#xff0c;摒弃了一些理论知识&#xff0c;一切皆实战。课程收益学习完本套课程的学员都能很容易搭建基于SpringCloud的微服务架构。讲师介绍李熠 更…

利用某网站的SQL注入漏洞getshell

某学校网站存在SQL注入漏洞&#xff0c;可以利用sqlmap对齐进行SQL注入攻击&#xff0c;并获得webshell。 漏洞URL&#xff1a; http://www.xxx.com/news1.php?id1执行攻击命令&#xff1a; sqlmap -u "http://www.xxx.com/news1.php?id1" -p id --current-db -…

某网站登录页面存在用户手机号信息泄露

漏洞利用 输入用户名&#xff0c;界面将弹出手机号&#xff0c;看似手机号被隐藏了&#xff0c;但是通过抓取http包&#xff0c;发现后台其实返回了手机号&#xff0c;由此可知&#xff0c;改手机号只在前端做了隐藏处理。 而且该接口没有做任何校验&#xff0c;可以任意调用&…

使用IWMS的网站打开显示“未能加载文件或程序集”,解决方案

首先&#xff0c;会出现这样的问题原因是&#xff1a; 1、应用程序集里面有些事互相引用的&#xff0c;所以 问题有多种情况&#xff0c;第一、这个应用程序集出问题了&#xff1b; 2、它所依赖的那个程序集出问题了&#xff1b; 3、在项目生成的时候&#xff0c;代码里面有逻辑…

服务器上的php4.0网站连接sql2005服务器连接不上,SQLServer之创建链接服务器

创建链接服务器注意事项当我们要跨本地数据库&#xff0c;访问另外一个数据库表中的数据时&#xff0c;本地数据库中就必须要创建远程数据库的DBLINK&#xff0c;通过DBLINNK数据库可以像访问本地数据库一样访问远程数据库表中的数据。链接服务器允许访问针对OLE DB数据源的分布…

【项目】仿知乎网站项目梳理

GitHub地址&#xff1a;GitHub - vicotorz/zhangdizhihu: 仿“知乎”问答系统 开发流程&#xff1a;DataBase-->Model-->Dao-->Service-->Controller-->Test SQL 建表语句&#xff1a; 评论&#xff1a;comment id int(11), content …

https协议 ppt 下载卷_超全的PPT制作辅助网站和工具

超全的PPT制作辅助网站和工具很多小伙伴在制作 PPT 的时候&#xff0c;常常会遇到不知道该如何入手的问题&#xff0c;特别是对于&#xff1a;图片该如何选用&#xff1f;渐变风格的背景图去哪找&#xff1f;炫光的背景是怎么生成的&#xff1f;手机可以下载高清图片么&#xf…

Nancy之给我们的网站添加自定义图标

Nancy之给我们的网站添加自定义图标 原文:Nancy之给我们的网站添加自定义图标当我们在做一个网站时&#xff0c;可能经常会有这样一个需求&#xff0c;要给我们做的网站添加一个自定义的图标。 在Nancy中&#xff0c;默认是的下面这样 一个妹子的头像&#xff0c;其实也是挺好看…

我的第一个javaweb学习----模仿社区网站(三)

写注册界面的后台 首先得建立一张数据库表&#xff0c;用于存储用户信息的userinfo表&#xff0c;包括注册时间&#xff0c;昵称&#xff0c;签名等 受理注册信息的servlet 然后在servlet包下建立一个注册的Regservlet的Servlet类&#xff0c;用于接收网页传来的信息&#xff0…

什么专业学html css,认识HTML、css的重要性-专业SEO技术教程(27)

认识HTML、css的重要性-专业SEO技术教程(27)通过之前的学习&#xff0c;相信大家已经对SEO有了一定的认识。今天起我们将正式开始SEO的学习。看到这里有些朋友或许有这样的疑问&#xff0c;我们不是要学习SEO吗&#xff1f;为什么要讲解HTML的一些知识呢&#xff1f;这个就要从…

史上最全最新IT网站——你收藏了吗?

快来看看你知道多少 IT网站 1.CSDN 中国专业IT社区CSDN (Chinese Software Developer Network) 创立于1999年&#xff0c;致力于为中国软件开发者提供知识传播、在线学习、职业发展等全生命周期服务。 2.太平洋电脑网 于1999年正式推出&#xff0c;是国内首家以专业电脑市场…

网站后台文章编辑器eWebEditor 7介绍 及破解版免费下载

做网站的朋友都知道&#xff0c;网站后台发布文章的时候需要用到网页编辑器。什么叫网页编辑器&#xff0c;就是输入文章内容的一个输入框&#xff0c;这个输入框是个多行的输入框&#xff0c;在输入框中&#xff0c;能对输入的文字进行编辑排版。一般我们使用开源程序做站的时…

金融界网站模拟白银大赛,盈利可以兑换现金

金融界网站模拟白银大赛&#xff0c;盈利可以兑换现金 首届领航中国杯白银帝国赛将于2014年5月12日正式拉开帷幕&#xff0c;本届大赛创下财经互联网领域两项纪录&#xff0c;一是成功打造了白银模拟交易网页版&#xff0c;再者是将模拟盈利部分兑换成真实的现金&#xff01;赛…

给大家分享网站源码有12.9G需要的自己去下载吧

给大家分享网站源码有12.9G需要的自己去下载吧 给大家分享网站源码有12.9G需要的自己去下载吧 给大家分享网站源码有12.9G需要的自己去下载吧&#xff0c;里面有asp php aspx等网站源码。 文件太大&#xff0c;我用旋风下载不下来&#xff0c;一共有2800个源码&#xff0c;旋风…

使用WebDeployment Project改善VS2005发布网站问题

VS2005真的让人很不习惯&#xff0c;搞个WEB真要把人给搞死了。写程序就不说了。发布吧&#xff0c;是个大问题。Namespac没有&#xff0c;还有GAC引用不会自动发布出去,生成的DLL N个&#xff0c;在程序中就没法用反射来调用。整个一个就是折腾人。 下面是引用的。 VS2005发…

IIS中启用CGI来托管PHP和Python网站

IS中如果要托管PHP和Python的web站点&#xff0c;需要用到CGI来处理HTTP请求&#xff0c;默认情况IIS中是没有CGI模块的&#xff0c;需要在Windows server的服务器管理器&#xff08;Server Manager&#xff09;中安装CGI模块&#xff0c;步骤如下&#xff1a; 首先打开Server …

图解IIS8上解决网站第一次访问慢的处理(转载)

本篇经验以IIS8&#xff0c;Windows Server 2012R2做为案例。IIS8 运行在 Windows Server 2012 and Windows 8 版本以上的平台上。IIS中应用程序池和网站是单独存在的&#xff0c;但是网站运行必须建立在对应的应用程序池启动的前提下。默认情况下&#xff0c;应用程序池在不活…

.NET Core实战项目之CMS 第十七章 CMS网站系统的部署

.NET Core实战项目之CMS 第十七章 CMS网站系统的部署 目前我们的.NET Core实战项目之CMS系列教程基本走到尾声了&#xff0c;通过这一系列的学习你应该能够轻松应对.NET Core的日常开发了&#xff01;当然这个CMS系统的一些逻辑处理还需要优化&#xff0c;如没有引入日志组件以…

asn1 pem pfx格式证书_在阿里云购买SSL证书,让网站支持HTTPS

SSL简介以下内容引用自&#xff1a;百度百科&#xff1a;SSLSSLSSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全&#xff08;Transport Layer Security&#xff0c;TLS&#xff09;是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层与应用层之间对…