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

简介: 这几天车子跟别人撞了,水箱撞稀烂了,要坐一个星期的公车 实在太无聊,就抽时间搞了这么个APP出来,打发公车上的时光 (开发者头条里的新闻专业性太强,公车上实在无法静心研读) 我经常看的也就博客园、infoq、36kr、开源中国的新闻 现在只做了博客园和infoq,接下来打算做36kr和开...

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

实在太无聊,就抽时间搞了这么个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上给我颗星

多谢各位啦

目录
相关文章
|
5天前
|
Go API 开发者
深入探讨:使用Go语言构建高性能RESTful API服务
在本文中,我们将探索Go语言在构建高效、可靠的RESTful API服务中的独特优势。通过实际案例分析,我们将展示Go如何通过其并发模型、简洁的语法和内置的http包,成为现代后端服务开发的有力工具。
|
17天前
|
API Java Python
API的神秘面纱:从零开始构建你的RESTful服务
【8月更文挑战第31天】在现代网络应用开发中,RESTful API已成为数据交互的标准。本文通过比较流行的技术栈(如Node.js、Python的Django和Flask、Java的Spring Boot)及其框架,帮助你理解构建RESTful API的关键差异,涵盖性能、可扩展性、开发效率、社区支持、安全性和维护性等方面,并提供示例代码和最佳实践,指导你选择最适合项目需求的工具,构建高效、安全且易维护的API服务。
28 0
|
17天前
|
Java 缓存 数据库连接
揭秘!Struts 2性能翻倍的秘诀:不可思议的优化技巧大公开
【8月更文挑战第31天】《Struts 2性能优化技巧》介绍了提升Struts 2 Web应用响应速度的关键策略,包括减少配置开销、优化Action处理、合理使用拦截器、精简标签库使用、改进数据访问方式、利用缓存机制以及浏览器与网络层面的优化。通过实施这些技巧,如懒加载配置、异步请求处理、高效数据库连接管理和启用GZIP压缩等,可显著提高应用性能,为用户提供更快的体验。性能优化需根据实际场景持续调整。
41 0
|
17天前
|
Java 网络架构 数据格式
Struts 2 携手 RESTful:颠覆传统,重塑Web服务新纪元的史诗级组合!
【8月更文挑战第31天】《Struts 2 与 RESTful 设计:构建现代 Web 服务》介绍如何结合 Struts 2 框架与 RESTful 设计理念,构建高效、可扩展的 Web 服务。Struts 2 的 REST 插件提供简洁的 API 和约定,使开发者能快速创建符合 REST 规范的服务接口。通过在 `struts.xml` 中配置 `&lt;rest&gt;` 命名空间并使用注解如 `@Action`、`@GET` 等,可轻松定义服务路径及 HTTP 方法。
30 0
|
17天前
|
前端开发 API 开发者
JSF与RESTful服务的完美邂逅:如何打造符合现代Web潮流的数据交互新体验
【8月更文挑战第31天】随着互联网技术的发展,RESTful架构风格因其实现简便与无状态特性而在Web服务构建中日益流行。本文探讨如何结合JavaServer Faces (JSF) 和 JAX-RS 构建RESTful API,展示从前端到后端分离的完整解决方案。通过定义资源类、配置 `web.xml` 文件以及使用依赖注入等步骤,演示了在JSF项目中实现RESTful服务的具体过程,为Java开发者提供了实用指南。
28 0
|
17天前
|
JSON API 数据库
探索FastAPI:不仅仅是一个Python Web框架,更是助力开发者高效构建现代化RESTful API服务的神器——从环境搭建到CRUD应用实战全面解析
【8月更文挑战第31天】FastAPI 是一个基于 Python 3.6+ 类型提示标准的现代 Web 框架,以其高性能、易用性和现代化设计而备受青睐。本文通过示例介绍了 FastAPI 的优势及其在构建高效 Web 应用中的强大功能。首先,通过安装 FastAPI 和 Uvicorn 并创建简单的“Hello, World!”应用入门;接着展示了如何处理路径参数和查询参数,并利用类型提示进行数据验证和转换。
31 0
|
17天前
|
XML JSON API
打造高效后端服务:RESTful API 设计实践
【8月更文挑战第31天】在数字化浪潮中,后端服务是支撑起整个互联网生态的骨架。本文将带你深入理解RESTful API的设计哲学,通过具体案例学习如何构建清晰、灵活且高效的后端服务接口。我们将一起探索资源定位、接口约束以及状态传输的关键要素,并通过代码示例揭示最佳实践。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的洞见和实用的技巧。
|
16天前
|
Web App开发 Java 视频直播
FFmpeg开发笔记(四十九)助您在毕业设计中脱颖而出的几个流行APP
对于软件、计算机等专业的毕业生,毕业设计需实现实用软件或APP。新颖的设计应结合最新技术,如5G时代的音视频技术。示例包括: 1. **短视频分享APP**: 集成FFmpeg实现视频剪辑功能,如添加字幕、转场特效等。 2. **电商购物APP**: 具备直播带货功能,使用RTMP/SRT协议支持流畅直播体验。 3. **同城生活APP**: 引入WebRTC技术实现可信的视频通话功能。这些应用不仅实用,还能展示开发者紧跟技术潮流的能力。
45 4
FFmpeg开发笔记(四十九)助您在毕业设计中脱颖而出的几个流行APP
|
10天前
|
移动开发 小程序 JavaScript
uni-app开发微信小程序
本文详细介绍如何使用 uni-app 开发微信小程序,涵盖需求分析、架构思路及实施方案。主要功能包括用户登录、商品列表展示、商品详情、购物车及订单管理。技术栈采用 uni-app、uView UI 和 RESTful API。文章通过具体示例代码展示了从初始化项目、配置全局样式到实现各页面组件及 API 接口的全过程,并提供了完整的文件结构和配置文件示例。此外,还介绍了微信授权登录及后端接口模拟方法,确保项目的稳定性和安全性。通过本教程,读者可快速掌握使用 uni-app 开发微信小程序的方法。
27 3