亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

曾幾何時,你是否也曾有一個博客夢?

2019-11-14 15:49:54
字體:
來源:轉載
供稿:網友

1.現在的你是否還有夢想?

          座在客廳的沙發上,戴著耳機,閉上眼睛,聽著那首我聽了上百遍的see you again,想著速度與激情的那群人,我很羨慕他們,一群志同道合的人在一起,干著一件大家都那么向往的事,夢想,感覺這兩個字離我越來越遠,太多世俗的東西,奪走了我們原有的天真,每天感覺除了上班,吃飯,睡覺,我感覺不到還有什么樂趣.

           曾經也想自己寫一些東西,可惜能力不夠,一次偶然的機會,認識了敷衍不起,相見如故,一下子聊了很多,給我的印象是,大神級的人物,有想法,文藝青年,我談到了我想搞一個自己博客的想法。

           說到這里,他比我還激動,曾幾何時,他也有這樣的想法,那時候也是能力不夠,現在終于有那么點能力了,說開始就開始,一開始的計劃是,每個星期更新一個模塊的東西,現在的情況是開源博客系統的基本原型都出來了,如果你心懷這樣的一個博客夢想,想寫一個真正屬于自己的博客系統,那么還猶豫什么,加入我們。

           在此給出see you again百度音樂盒地址:http://music.baidu.com/song/s/4707e5121d80855c1d51b在你不忙的時候,靜下心來,聽聽音樂,音樂有的時候能帶給我們一種微妙的感覺。

送大家一句話:夢想是春天的綠,嬌嫩脆弱充滿新意;夢想是生命的水,給人希望潤物無聲;夢想是天邊的風,來去匆匆追之不及;夢想是凋零的葉,滋養大樹迎來新生。

2.開源博客系列文章目錄

《一步步搭建自己的博客》

   一、一步步開發自己的博客  .NET版(1、頁面布局、blog遷移、數據加載)

   二、一步步開發自己的博客  .NET版(2、評論功能)

   三、一步步開發自己的博客  .NET版(3、注冊登錄功能)

   四、一步步開發自己的博客  .NET版(4、文章發布功能)

   五、一步步開發自己的博客  .NET版(5、搜索功能)

   六、一步步開發自己的博客  .NET版(6、手機端的兼容)

演示地址http://blog.haojima.net/      群內共享源碼469075305 

 3.開源博客框架說明

 開發工具:vs2013+mssql+EF6.0

整個項目采用的asp.net MVC4.0+EF6.0+經典的簡單三層

 

 項目采用最經典的三層架構,其實博客系統用這個完全就夠用了,EF采用的是model frist,BLL層和DAL采用T4模板自動生成。下面是數據庫表的一些說明。

 4.在這個項目中你能學到什么?

博客系統的中的亮點,在這里使用HtmlAgilityPack組件解析HTML網頁,我們只需要把我們的博客園的賬號在這里輸入就可以很快的把我們博客園中的文章備份過來。

 

 其核心代碼如下:

        /// <summary>        /// 根據用戶導入cnblog數據        /// </summary>        /// <param name="userName"></param>        /// <returns></returns>        public string Import(string userName, string iszf, string isshowhome, string isshowmyhome)        {            int blosNumber = 0;            javaScriptSerializer jss = new JavascriptSerializer();            string url = "http://www.49028c.com/" + userName + @"/mvc/blog/sidecolumn.aspx";            HtmlAgilityPack.HtmlWeb htmlweb = new HtmlAgilityPack.HtmlWeb();            HtmlAgilityPack.HtmlDocument document = new HtmlDocument();            var docment = htmlweb.Load(url);            string userid = GetCnblogUserId(userName);            var liS = docment.DocumentNode.SelectNodes("//*[@id='sidebar_categories']/div[1]/ul/li");            foreach (var item in liS)            {                var tXPath = item.XPath;                var href = item.SelectSingleNode(tXPath + "/a").Attributes["href"].Value;                var blogtype = htmlweb.Load(href);                //var entrylistItem = blogtype.DocumentNode.SelectNodes("//*[@id='mainContent']/div/div[2]/div[@class='entrylistItem']");                var entrylistItem = blogtype.DocumentNode.SelectNodes("//div[@class='entrylistItem']");                if (null == entrylistItem)//做兼容                    entrylistItem = blogtype.DocumentNode.SelectNodes("//div[@class='post post-list-item']"); //                    if (null == entrylistItem)                {                    continue;                }                foreach (var typeitem in entrylistItem)                {                    var typeitemXPath = typeitem.XPath;                    var typeitemhrefObj = typeitem.SelectSingleNode(typeitemXPath + "/div/a");                    if (null == typeitemhrefObj) //做兼容                        typeitemhrefObj = typeitem.SelectSingleNode(typeitemXPath + "/h2/a");                    var typeitemhref = typeitemhrefObj.Attributes["href"].Value;                    if (IsAreBlog(typeitemhref))                        continue;//說明這篇文章已經備份過了的                    var bloghtml = htmlweb.Load(typeitemhref);                    var blogcontextobj = bloghtml.DocumentNode.SelectSingleNode("//*[@id='VEVb_post_body']");//.InnerHtml;                    if (blogcontextobj == null) continue;//有可能是加密文章                    var blogcontext = blogcontextobj.InnerHtml;                    var blogNameObj = bloghtml.DocumentNode.SelectSingleNode("//*[@id='Header1_HeaderTitle']");                    if (null == blogNameObj)                        blogNameObj = bloghtml.DocumentNode.SelectSingleNode("//*[@id='lnkBlogTitle']");                    try                    {                        blogName = blogNameObj.InnerText;                    }                    catch (Exception)                    { }                    var blogtitle = bloghtml.DocumentNode.SelectSingleNode("//*[@id='cb_post_title_url']").InnerText;                    var blogurl = bloghtml.DocumentNode.SelectSingleNode("//*[@id='cb_post_title_url']").Attributes["href"].Value;                    var blogtypetagurl = "http://www.49028c.com/mvc/blog/CategoriesTags.aspx?blogApp=" + userName + "&blogId=" + userid + "&postId=" +                        typeitemhref.Substring(typeitemhref.LastIndexOf('/') + 1, typeitemhref.LastIndexOf('.') - typeitemhref.LastIndexOf('/') - 1);                    var blogtag = Blogs.Common.Helper.MyHtmlHelper.GetRequest(blogtypetagurl);                    var jsonobj = jss.Deserialize<Dictionary<string, string>>(blogtag);                    if (null == jsonobj)                        continue;//如果沒有 則返回  (這里只能去 數字.html  不能取那種自定義的url)                    var tagSplit = jsonobj["Tags"].Split(',');                    var blogtagid = new List<int>();                    for (int i = 0; i < tagSplit.Length; i++)                    {                        if (tagSplit[i].Length >= 1 && tagSplit[i].LastIndexOf('<') >= 1)                        {                            var blogtagname = tagSplit[i].Substring(tagSplit[i].IndexOf('>') + 1, tagSplit[i].LastIndexOf('<') - tagSplit[i].IndexOf('>') - 1);                            blogtagid.Add(this.GetTagId(blogtagname, userName));                        }                    }                    var categoriesSplit = jsonobj["Categories"].Split(',');                    var blogtypeid = new List<int>();                    for (int i = 0; i < categoriesSplit.Length; i++)                    {                        if (categoriesSplit[i].Length >= 1 && categoriesSplit[i].LastIndexOf('<') >= 1)                        {                            var blogtypename = categoriesSplit[i].Substring(categoriesSplit[i].IndexOf('>') + 1, categoriesSplit[i].LastIndexOf('<') - categoriesSplit[i].IndexOf('>') - 1);                            blogtypeid.Add(this.GetTypeId(blogtypename, userName));                        }                    }                    var blogtimeobj = bloghtml.DocumentNode.SelectSingleNode("//*[@id='post-date']");                    var blogtime = "";                    if (null != blogtimeobj)                        blogtime = blogtimeobj.InnerText;                    DateTime? createtime = null;                    var Outcreatetime = DateTime.Now;                    if (DateTime.TryParse(blogtime, out Outcreatetime))                        createtime = Outcreatetime;                    BlogsBLL blog = new BlogsBLL();                    var myBlogTags = new BlogTagsBLL().GetList(t => blogtagid.Contains(t.Id), isAsNoTracking: false).ToList();//.ToList();                                                            var myBlogTypes = new BLL.BlogTypesBLL().GetList(t => blogtypeid.Contains(t.Id), isAsNoTracking: false).ToList();//.ToList();                    try                    {                        var modelMyBlogs = new ModelDB.Blogs()                        {                            BlogContent = blogcontext,                            BlogCreateTime = createtime,                            BlogTitle = blogtitle,                            BlogUrl = blogurl,                            IsDel = false,                            BlogTags = myBlogTags,                            BlogTypes = myBlogTypes,                            UsersId = GetUserId(userName),                            BlogForUrl = blogurl,                            IsForwarding = iszf == "true",                            IsShowMyHome = isshowmyhome == "true",                            IsShowHome = isshowhome == "true"                        };                        blog.Add(modelMyBlogs);                        blog.save();                        var newtag = string.Empty;                        modelMyBlogs.BlogTags.Where(t => true).ToList().ForEach(t => newtag += t.TagName + " ");                        var newblogurl = "/" + modelMyBlogs.BlogUsersset.UserName + "/" + modelMyBlogs.Id + ".html";                        SearchResult search = new SearchResult()                        {                            flag = modelMyBlogs.UsersId,                            id = modelMyBlogs.Id,                            title = blogtitle,                            clickQuantity = 0,                            blogTag = newtag,                            content = getText(blogcontext, document),                            url = newblogurl                        };                        SafetyWriteHelper<SearchResult>.logWrite(search,  PanGuLuceneHelper.instance.CreateIndex);                                                var postid = blogurl.Substring(blogurl.LastIndexOf('/') + 1);                        postid = postid.Substring(0, postid.LastIndexOf('.'));                        testJumonyParser(modelMyBlogs.Id, 1, postid, userName);                        blosNumber++;                    }                    catch (Exception)                    {                        throw;                    }                }            }            if (blosNumber > 0)            {                Blogs.BLL.Common.CacheData.GetAllTag(true);                Blogs.BLL.Common.CacheData.GetAllType(true);                Blogs.BLL.Common.CacheData.GetUserInfo(true);                return "成功導入" + blosNumber + "篇Blog";            }            return "ok";        }
public string Import(string userName, string iszf, string isshowhome, string isshowmyhome)
 PRivate int GetTagId(string tagname, string userName)        {            BlogTagsBLL blogtag = new BlogTagsBLL();            try            {                var blogtagmode = blogtag.GetList(t => t.TagName == tagname);                if (blogtagmode.Count() >= 1)                    return blogtagmode.FirstOrDefault().Id;                else                {                    blogtag.Add(new ModelDB.BlogTags()                    {                        TagName = tagname,                        IsDel = false,                        UsersId = GetUserId(userName)                    });                    blogtag.save();                    return GetTagId(tagname, userName);                }            }            catch (Exception ex)            {                return -1;            }        }
       private int GetTypeId(string typename, string userName)        {            BlogTypesBLL blogtype = new BlogTypesBLL();            var blogtagmode = blogtype.GetList(t => t.TypeName == typename);            if (blogtagmode.Count() >= 1)                return blogtagmode.FirstOrDefault().Id;            else            {                blogtype.Add(new ModelDB.BlogTypes()                {                    TypeName = typename,                    CreateTime = DateTime.Now,                    IsDel = false,                    UsersId = GetUserId(userName)                });                blogtype.save();                return GetTypeId(typename, userName);            }        }
      private int GetUserId(string userName)        {            BlogUsersBLL user = new BlogUsersBLL();            var blogtagmode = user.GetList(t => t.UserName == userName);            if (blogtagmode.Count() >= 1)                return blogtagmode.FirstOrDefault().Id;            else            {                user.Add(new ModelDB.BlogUsersSet()                {                    UserName = userName,                    IsDel = false,                    UserPass = "admin",                    UserNickname = string.IsNullOrEmpty(blogName.Trim()) ? userName : blogName,                    IsLock = false,                    UserMail = "無效",                    UserInfo = null                });                try                {                    user.save(false);                }                catch (Exception ex)                {                    throw;                }                return GetUserId(userName);            }        }
        private bool IsAreBlog(string url)        {            BLL.BlogsBLL blog = new BLL.BlogsBLL();            var blogs = blog.GetList(t => t.BlogUrl == url);            return blogs.Count() >= 1;        }
        private string GetCnblogUserId(string url)        {            HtmlAgilityPack.HtmlWeb htmlweb = new HtmlAgilityPack.HtmlWeb();            var docment = htmlweb.Load("http://www.49028c.com/" + url);            var list = docment.DocumentNode.SelectNodes("//link[@rel='stylesheet']");            foreach (var item in list)            {                if (null != item.Attributes && item.Attributes.Contains("href"))                {                    var href = item.Attributes["href"].Value;                    href = href.Substring(href.LastIndexOf("/") + 1, href.IndexOf(".") - href.LastIndexOf("/") - 1);                    int userid = -1;                    if (int.TryParse(href, out userid))                        return userid.ToString();                }            }            return "";        }
        public string testJumonyParser(int BlogsId = 1, int BlogUsersId = 1, string postId = "4368417", string blogApp = "zhaopei")        {            bool isNext = true;            int i = 0;            //List<BlogCommentSet> blogcommen = new List<BlogCommentSet>();            BlogCommentBLL blogcommenbll = new BlogCommentBLL();            while (isNext)            {                i++;                var url = "http://www.49028c.com/mvc/blog/GetComments.aspx?postId=" + postId + "&blogApp=" + blogApp + "&pageIndex=" + i;                var jumony = new JumonyParser();                var htmlSource = jumony.LoadDocument(url).InnerHtml();                JavaScriptSerializer _jsSerializer = new JavaScriptSerializer();                CnBlogComments comm = _jsSerializer.Deserialize<CnBlogComments>(htmlSource);                var commentsHtml = jumony.Parse(comm.commentsHtml);                var pager = commentsHtml.Find("div.pager").FirstOrDefault();                if (null != pager)                {                    var Next = pager.Find("*").LastOrDefault().InnerText();                    if (Next != "Next >")                        isNext = false;                }                else                    isNext = false;                var listComment = commentsHtml.Find("div.feedbackItem").ToList();                foreach (var item in listComment)                {                    var commentDataNode = item.Find("div.feedbackListSubtitle span.comment_date").FirstOrDefault();  //                    var commentData = DateTime.Parse(commentDataNode.InnerText());                    var commentUserNode = item.Find("div.feedbackListSubtitle a[target='_blank']").FirstOrDefault();                    var commentUser = commentUserNode.InnerText();                    var Content = item.Find("div.blog_comment_body").FirstOrDefault().InnerText();                    blogcommenbll.Add(                        new BlogCommentSet()                        {                            BlogsId = BlogsId,                            CommentID = -1,                            IsDel = false,                            Content = Content,                            CreateTime = commentData,                            ReplyUserName = commentUser,                            BlogUsersId = BlogUsersId,                            IsInitial = true                        }                        );                }            }            try            {                blogcommenbll.save(false);            }            catch (Exception)            { }            return "ok";        }

 在著比如說這個盤古分詞,全文檢索,效果如下

 代碼太多,我就截圖算了...

 當然開源博客系統中還有很多其他的東西,如果你感興趣,或者你有什么好的主意,就加入我們的隊伍中來吧。

5.機會來了,阿里云兩年免費的主機!

虛擬空間申請地址:http://wanwang.aliyun.com/hosting/free/

雖說免費的東西都不怎么好,流量空間各方面都有限制,當時用來做個人博客已經夠用了。。。

如果您對本篇文章感興趣,那就麻煩您點個贊,您的鼓勵將是我的動力。 當然您還可以加入QQ群:嗨 博客討論。

如果您有更好的處理方式,希望不要吝嗇賜教。

 本文鏈接:http://www.49028c.com/zhaopei/p/4744846.html 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美激情中文字幕在线| 亚洲精品久久久久中文字幕二区| 2021久久精品国产99国产精品| 国产精品久久久久久久天堂| 亚洲自拍中文字幕| 热久久这里只有| 日本欧美精品在线| 亚洲精品二三区| 亚洲人成自拍网站| 69久久夜色精品国产69| 狠狠躁18三区二区一区| 成人两性免费视频| 亚洲跨种族黑人xxx| 国产欧美va欧美va香蕉在线| 欧美国产日本高清在线| 国产亚洲精品美女| 欧美精品久久一区二区| 欧美xxxx综合视频| 国模叶桐国产精品一区| 色哟哟网站入口亚洲精品| 亚洲自拍偷拍第一页| 久久久久久成人| 欧美与欧洲交xxxx免费观看| 久久久久久久电影一区| 一道本无吗dⅴd在线播放一区| 久久久久久尹人网香蕉| 在线亚洲男人天堂| 欧美激情精品久久久久久大尺度| 欧美高清视频免费观看| 日本三级韩国三级久久| 91色中文字幕| 欧美黄色成人网| 国产女精品视频网站免费| 欧美中文在线视频| 日韩精品在线观看视频| 亚洲精品久久久久中文字幕二区| 久久成人精品视频| 久久亚洲精品成人| 久久韩剧网电视剧| 国产亚洲欧洲黄色| 欧美激情xxxx| 亚洲色无码播放| 亚洲视频第一页| 国产日产欧美精品| 国产精品久久久久久av| 美女999久久久精品视频| 97精品国产97久久久久久春色| 欧美综合国产精品久久丁香| 欧美激情视频在线免费观看 欧美视频免费一| 欧美高清在线播放| 国产精品69av| 91国产美女视频| 精品久久久一区二区| 亚洲欧美色婷婷| 成人天堂噜噜噜| 亚洲成人av在线| 欧美日韩美女在线观看| 热久久免费国产视频| 国产精品美乳一区二区免费| 欧美中在线观看| 国产偷亚洲偷欧美偷精品| 自拍亚洲一区欧美另类| 欧美一区二区三区……| 日韩在线视频线视频免费网站| 欧美精品福利在线| 久久精品国产精品| www.xxxx欧美| 亚洲91精品在线观看| 欧美精品免费在线观看| 欧美日韩在线视频一区二区| 亚洲欧美综合精品久久成人| 成人亚洲综合色就1024| 久久久久www| 中文字幕亚洲字幕| 国产精品欧美日韩| 中文字幕欧美日韩在线| 国产精品久久久久久久久久尿| 日韩综合视频在线观看| 日韩黄色av网站| 日韩视频―中文字幕| 人人澡人人澡人人看欧美| 国产精品xxx视频| 日韩国产欧美精品在线| 欧美综合在线第二页| 国产精品欧美日韩| 成人在线观看视频网站| 日本亚洲精品在线观看| 国产一区香蕉久久| 国产精品一二三在线| 欧美一级淫片播放口| 中文字幕日韩欧美精品在线观看| 亚洲天堂色网站| 国产精品丝袜久久久久久高清| 亚洲大尺度美女在线| 国产精品吴梦梦| 国产精品三级久久久久久电影| 国产精品久久久久久久天堂| 精品成人av一区| 动漫精品一区二区| 最近2019中文字幕mv免费看| 亚洲理论在线a中文字幕| 亚洲高清在线观看| 亚洲一品av免费观看| 欧美日韩一区二区免费视频| 欧美精品18videosex性欧美| 亚洲片av在线| 91人成网站www| 欧美日韩亚洲天堂| 日韩av手机在线观看| 欧美小视频在线观看| 国产精品一二三视频| 日韩电影第一页| 在线精品国产成人综合| 久久91精品国产91久久久| 国产一区二区黑人欧美xxxx| 国产精品美女免费| 亚洲深夜福利在线| 精品高清美女精品国产区| 在线丨暗呦小u女国产精品| 97激碰免费视频| 精品福利视频导航| 中文字幕欧美日韩精品| 成人av在线网址| 日韩免费av一区二区| 国产精品黄色影片导航在线观看| 欧洲日韩成人av| 国产91在线播放精品91| 欧美专区国产专区| 欧美日本亚洲视频| 国产欧美一区二区三区视频| 国产精品久久久久久超碰| 欧美超级乱淫片喷水| 日韩精品999| 国产va免费精品高清在线观看| 亚洲欧美日韩区| 欧美成人高清视频| 亚洲国产精品va在线观看黑人| 欧美日韩在线免费观看| 成人免费大片黄在线播放| 青青a在线精品免费观看| 亚洲最大激情中文字幕| 亚洲一区二区三区四区视频| 国产精品视频精品| 色综合男人天堂| 亚洲精品98久久久久久中文字幕| 一道本无吗dⅴd在线播放一区| 在线观看精品国产视频| 精品香蕉在线观看视频一| 日韩美女av在线免费观看| 日本一区二区在线免费播放| www.亚洲人.com| 日韩经典中文字幕| 免费97视频在线精品国自产拍| 亚洲人午夜色婷婷| 国产丝袜一区视频在线观看| 中文欧美在线视频| 57pao成人国产永久免费| 亚洲国产欧美一区| 最近2019年中文视频免费在线观看| 色先锋资源久久综合5566| 91精品啪aⅴ在线观看国产| 日韩在线观看免费网站| 亚洲美女动态图120秒| 亚洲男人av在线|