文章采集程序(接着公布源码关键源码讲解:采集程序的源码采集)

优采云 发布时间: 2022-03-25 10:15

  文章采集程序(接着公布源码关键源码讲解:采集程序的源码采集)

  这几天车子撞到人了,水箱也被砸得粉碎。我要坐公共汽车一个星期python

  实在是太无聊了,就抽空做个这样的app来打发公交车上的git

  (开发者头条新闻太专业了,上车没办法研究)github

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

  我现在只做博客园和infoq,然后打算做36kr和开源中国新闻(今天上午已经完成了这项工作),如果大家有什么好的建议,也可以在评论中提到ide

  数据是准实时获取的,然后我会尽量让你刷的时候有消息给你看帖

  tod​​o:新闻分享、采集、标签、分类等功能,当然要看你的热情了!网址

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

  更新:添加了 51cto 的采集程序博客

  废话不多说,先上图发展

  

  

  

  

  然后去APK的下载链接(如果你有热情,苹果版也可以)

  然后发布源代码

  关键源码说明:

  采集程序源码

  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();

            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(dataList);

            }

            db.Dispose();

            Console.WriteLine("增长了{0}条文章0", dataList.Count);

            Thread.Sleep(GetWaitTime());

            cnblogs();

        }

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

  GetWaitTime() 随机等待1分钟到10分钟之间的时间长度,不频繁采集,不定期采集,避免目标主机阻塞采集程序所在IP

  再看WEB服务的关键代码

<p>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 result = null;            

            if (action == "PullDown")

            {

                var db = dbFactory.Open();

                result = db.SelectFmt("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("select * from allen_news where news_id 

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线