【开源】开发者新闻APP+新闻Restful服务+博客园新闻采集程序+infoq新闻采集程序+36kr新闻采集程序+oschina新闻采集程序+51cto新闻采集程序+csdn新闻采集程序

这几天车子跟别人撞了,水箱撞稀烂了,要坐一个星期的公车

实在太无聊,就抽时间搞了这么个APP出来,打发公车上的时光

(开发者头条里的新闻专业性太强,公车上实在无法静心研读)

我经常看的也就博客园、infoq、36kr、开源中国的新闻

现在只做了博客园和infoq,接下来打算做36kr和开源中国的新闻(这个工作今天早上已经完成了),如果大家有什么好建议也可以在评论里提

数据都是准实时的取来的,以后争取做到你去刷就有新闻给你看

todo:新闻的分享、收藏、标签、分类等功能,当然这要看大家的热情程度啦! 

ps:你如果看了我写的采集代码,就不会问为什么不用rss这种东西了

更新:又增加了51cto的采集程序

 

废话少说,先来上图

           

 

接着上APK的下载连接(大家热情的话,苹果版也会有的)

https://github.com/xland/DeveloperNews/blob/master/DeveloperNews.apk?raw=true

 

接着公布源码

https://github.com/xland/DeveloperNews

 

 

关键源码讲解:

采集程序的源码

static void cnblogs()
        {
            CQ doc;
            try
            {
                var client = new RestClient("http://www.cnblogs.com/news/");
                var resq = new RestRequest(Method.GET);
                var resp = client.Execute(resq);
                doc = resp.Content;
            }
            catch (Exception ex)
            {
                Thread.Sleep(GetWaitTime());
                cnblogs();
                return;
            }
            var arr = doc[".post_item_body"].ToList();
            var dataList = new List<allen_news>();
            var db = dbFactory.Open();
            foreach (var item in arr)
            {
                var str = item.InnerText;
                var strArr = str.Split(Environment.NewLine.ToCharArray(),StringSplitOptions.RemoveEmptyEntries);
                var data = new allen_news();
                data.news_title = strArr[0];
                if (checkTitle(data.news_title))
                {
                    break;
                }
                data.news_summary = strArr[1].Trim();
                data.author = strArr[2].Split("发布于".ToCharArray(),StringSplitOptions.RemoveEmptyEntries)[0];
                data.add_time = DateTime.Now;
                data.from_site_flag = 0;
                data.news_url = ((CQ)item.InnerHTML)["h3 a"].Attr("href");
                dataList.Insert(0, data);
            }
            if(dataList.Count >0)
            {
                db.InsertAll<allen_news>(dataList);
            }
            db.Dispose();
            Console.WriteLine("增加了{0}条文章0", dataList.Count);
            Thread.Sleep(GetWaitTime());
            cnblogs();
        }

采集程序用到了CsQuery和RestSharp和ServiceStack.OrmLite三个开源程序

GetWaitTime()随机等1分钟到10分钟之间的一个时间长度,不要频繁的采,不要有规律的采,避免目标主机封锁采集程序所在的IP

 

 

再来看WEB服务的关键代码

protected void Page_Load(object sender, EventArgs e)
        {
            dbFactory = new OrmLiteConnectionFactory(ConfigurationManager.AppSettings["dbConnStr"], MySqlDialect.Provider);            
            var action = Request["Action"];
            var id = Request["Id"];
            List<allen_news> result = null;            
            if (action == "PullDown")
            {
                var db = dbFactory.Open();
                result = db.SelectFmt<allen_news>("select * from allen_news where news_id > {0} order by news_id desc limit 0,30",id);
                db.Dispose();
            }
            else if(action == "PullUp")
            {
                var db = dbFactory.Open();
                result = db.SelectFmt<allen_news>("select * from allen_news where news_id < {0} order by news_id desc limit 0,30", id);
                db.Dispose();
            }
            else if(action == "CheckVersion")
            {
                Response.Write("1.0.0");
                Response.End();
                return;
            }
            else
            {
                var db = dbFactory.Open();
                result = db.Select<allen_news>("select * from allen_news order by news_id desc limit 0,30");
                db.Dispose();
            }
            Response.Write(JsonConvert.SerializeObject(result));
            Response.End();
        }

 

APK客户端的代码,没有什么特殊的,大家可以自己去看吧

 

 

OK,就这些啦,喜欢的请给我点个赞,或者到github上给我颗星

多谢各位啦

时间: 2024-09-18 03:23:42

【开源】开发者新闻APP+新闻Restful服务+博客园新闻采集程序+infoq新闻采集程序+36kr新闻采集程序+oschina新闻采集程序+51cto新闻采集程序+csdn新闻采集程序的相关文章

C# 读取 博客园 Rss 的新闻数据

.cs /// <summary> /// 获取博客园新闻Rss数据 /// </summary> /// <returns></returns> [HttpPost] public JsonResult GetRssXmlDoc() { XmlDocument doc = new XmlDocument(); IList<RssXml> rssXmls = new List<RssXml>(); try { //加载Xml文件 do

【开源】博客园文章编辑器4.0版发布

源起 最近个人时间多起来了: 于是打算持续写一点东西: 前面写了两篇关于riot.js的东西: 被博客园的领导移出首页了: 原因之一是排版不整齐: 确实是不整齐,这我认, 然而,我自己可是博客园文章编辑器的作者啊, 而且持续写了三版了,从1.0.0写到3.0.0: 而且有很多园友也在用我的编辑器写博客: (陆续也有人在问我这个工具的下载地址,源码的问题:) 我自己咋就排班不好文章了呢? 于是翻出以前的工具代码, 回顾了一下,发现各个版本都还有很多问题没解决掉: 于是决定大规模重构一遍: 说白了就

博客园文章编辑器【客户端应用程序】V2.0.0发布,命名为51cnblogs

2015-6-16傍晚:说明 替换了一个关键类库,减小了文件的体积 改变了窗口的默认大小 改变了右侧菜单的宽度 下载地址:http://pan.baidu.com/s/1sjqjLVn 注意1: 当你新写完一篇博客之后,如果你点两次提交,博客园后台将创建两篇相同的博客 建议你点一次提交,然后再点一次获取,这样就可以修改这篇博客了 注意2: 这将是这个工具以这种形态的最后一次更新, 下次更新就会换一种形式了! 2015-6-14凌晨:说明 又修复了一些BUG 重新编译了代码 做了提升性能的工作 做

微信小程序实现博客园文章阅读功能

在微信小程序开发中,我们可以根据不同的业务场景,开发不同的业务应用,可以基于自身域名服务接口,也可以基于第三方的域名接口进行处理(如果被禁用除外),本篇随笔介绍使用小程序来实现我博客(http://wuhuacong.cnblogs.com)的文章阅读功能,这个小程序主要用来介绍使用介绍基于Javascript的正则表达式的处理应用,和常规在C#里面使用正则表达式有一些差异,因此可以作为后续使用正则表达式处理业务数据的一个练兵吧. 1.Request接口合法域名配置 一般情况下,我们知道微信的R

博客园博客撰写工具【开源】(可以直接黏贴图片) (转)

  更新2015-05-26 已经解决掉那个BUG,并增加了一些新功能优化了代码 BUG 如果你的用户名和你的博客Id不同的话,发布博客不成功 感谢若云帮忙重现BUG 2015-5-21更新 可以从博客园拉取最近一篇博客,并修改这篇博客了 (注意:如果拉取到的最近一篇博客,并非你草稿箱里的博客,那么你修改过之后,再保存是不会保存成功的:博客园API里获取到的数据信息没法判断这篇博客是否为草稿,如果能的话就好多了) 先说废话 最近在写Nim相关的博客 (Nim是门非常不错的语言,我接下来还会写很多

导入把博客园/开源中国的文章导入到wordpress博客

在11年的时候就发布过一个数据导入的插件,最近有朋友反馈会报错.经过检查问题应该出在xml文件检测上. 在重新优化这款插件之前,就一直有个想法,希望能够按照官方提供的wordpress-importer的文件导入流程来优化这款插件流程.由于时间关系,一直搁置没有动过.介于这次机会重写了一遍这款插件. 这款插件已在wordpress插件中心上线,大家可以直接在wordpress控制台进行在线安装,安装方法: 在wordpress控制台,点击"安装插件"搜索"cnblogs&qu

CSDN并购博客园遐想

我要打"假想",打成了"遐想",不过确实这篇文章属于我个人YY出来的.主要晚上写博客,用live writer发布好多次都不成功,然后用浏览器访问博客园首页,出现了下面画面.估计很多人都很熟悉这个界面,因为阿里云出了问题. 原文如下,最初是发表在iteye中的.原文地址:http://liminjun.iteye.com/admin/blogs/1876323 国内程序员的资讯网站应当数CSDN 了,不过很多IT从业者喜欢在里面看资讯,写博客,论坛里面交流问题,然后

如果我是博客园的产品经理【上】

题记 这是一个系列文章的第一篇 我打算写一个<如果我是XXX的产品经理>系列, 因为我是博客园的老用户了,这个系列又是写在博客园上的 所以先拿博客园开刀, 后面估计还会写QQ音乐,有道云笔记,github,foxmail等这些活在我生命中的产品.   为什么写这个系列 <捕蛇者说>最后一句写到:"故为之说,以俟夫观人风者得焉." 我这个系列的意图,也是希望能有赏识我的人,用业余时间一起做产品. (趁机推销自己一句,我是一家上市公司研发部的部门经理,整个部门有三十

狂热+坚持=成功&amp;nbsp;博客园CEO&amp;nbsp;DUDU访谈

博客 人物简介:dudu 1997年毕业于南京电力高等专科学校,对计算机技术有一种执着的兴趣与热情,喜欢挑战性,喜欢为了自己的目标去努力,.NET技术的坚定支持者,博客园的创建者和维护者. 我见过很多技术类个人网站,以前的Visual Basic技术网站.Visual C++技术网站.现在的.net和Java网站,他们有一个共同特点就是在开始的时候红红火火,1-2年后就逐渐消亡,很难作大,很难达到收支平衡.悄无声息的离开,似乎成为技术网站的宿命.不过几年前出现的专注.NET技术的个人网站博客园让