麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

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

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

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.companysz.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.companysz.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.companysz.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.companysz.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.companysz.com/zhaopei/p/4744846.html 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产99视频在线观看 | 制服丝袜日日夜夜 | 日日碰日日操 | 欧美成人免费一区二区三区 | 色七七网站 | 久久综合一区二区 | 日日草夜夜 | 欧美精品欧美 | 羞羞视频入口 | 国产成人强伦免费视频网站 | 国产乱淫av片免费网站 | 国产精品一区二区三区在线播放 | 99视频有精品视频高清 | hdhdhdhd19日本人 | 沉沦的校花奴性郑依婷c到失禁 | av黄色在线免费观看 | 黄色av一区二区三区 | 天堂二区 | 久久久久久久久国产 | 99国内精品 | 精品成人av一区二区在线播放 | 亚洲日本韩国精品 | 日本在线视频免费 | 日本在线精品视频 | 久久久久久麻豆 | 久久逼逼 | 亚洲网站免费观看 | 精品久久久久久久久久久久 | 久久免费视频精品 | 欧美精品国产综合久久 | 久久综合久久综合久久综合 | 久久久久久久一区二区 | 99精美视频| 成人福利视频网站 | 欧美一级黄色网 | 综合国产一区 | av最新在线| 国产精品成人av片免费看最爱 | 销魂美女一区二区 | 欧美日韩免费在线观看视频 | 免费日本一区二区 |