`
lolocomee
  • 浏览: 16318 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

C# 采集6-这个程序的采集关键流程

阅读更多

想到不能演示,我也没心情写了,这里一步把关键点贴出来吧,其实程序还有一部分是结果整理,然后上传到服务器的。大家努力吧。

 

 

   //绑定数据源
        private void loaddata()
        {
            //重新绑定,需先移除原来的数据源
            listBox1.DataSource = null;
            listBox2.DataSource = null;
            offtask = xmldao.getTasks("off", xdoc);
            ontask = xmldao.getTasks("on", xdoc);
            listBox1.DataSource = offtask;
            listBox2.DataSource = ontask;
            listBox1.DisplayMember = "Name";
            listBox1.ValueMember = "Name";
            listBox2.DisplayMember = "Name";
            listBox2.ValueMember = "Name";
        }

        //采集列表
        private void colectList()
        {
            try
            {
                star.Enabled = false;//采集按钮不可用
                string htmlcode = null;
                Regex regexarticles = null;
                MatchCollection marticles = null;
                List<Urls> l = new List<Urls>();
                foreach (Task t in ontask)//逐项任务采集
                {
                    label4.Text="正在进行对任务"+t.Name+"的列表采集";
                    //htmlcode = Colect.GetHtmlSource(t.Url, t.Ecode);
                    htmlcode = Colect.GetHtmlSource(t.Url);
                    htmlcode = Colect.SniffwebCode(htmlcode, t.ListAreaf, t.ListAreae);
                    regexarticles = new Regex(t.RexTitle);
                    marticles = regexarticles.Matches(htmlcode);
                    foreach (Match m in marticles)
                    {
                        Urls u = new Urls();
                        u.Title = Regex.Replace(m.Groups["title"].Value, "<[^>]*>", "");
                        u.Url = m.Groups["url"].Value;
                        if (u.Url.IndexOf("./") > 0)
                        {
                            u.Url.Replace("../", "");
                        }
                        if (u.Url.IndexOf("ttp:")<1)
                        {
                            Regex re=new Regex("http://[^/]+/");
                            if(re.Match(t.Url).Success)
                            {
                                u.Url = re.Match(t.Url).Value + u.Url;
                            }
                            
                        }
                        u.Name = t.Name;
                        l.Add(u);
                    }
                }
                list = l;
                label4.Text = "列表采集完毕";
                //保存列表
                saveList();
            }
            catch (Exception err)
            {
                label4.Text = "列表采集出错,错误原因:"+err.Message;
            }
        }

        //保存列表
        private void saveList()
        {
            if (list.Count < 1)
            {
                MessageBox.Show("无数据可添加");
                return;
            }
            else
            {
                string sqlstr;
                try
                {
                    dco.OpenConn();
                    foreach (Urls u in list)
                    {
                        if (u.Title != "")
                        {
                            sqlstr = "insert into list (title,url,isc,name) values ('" + u.Title + "','" + u.Url + "',0,'"+u.Name+"')";
                            dco.ExceteQuery(sqlstr);
                        }
                    }
                    //删除重复,保留最先添加的项
                    label4.Text = "保存文章列表成功,正在删除重复列表...";
                    sqlstr = "delete * from list Where oid Not In (select min(oid) from list group by url)";
                    dco.ExceteQuery(sqlstr);
                }
                catch (Exception ex)
                {
                    label4.Text = "列表保存出错,错误原因:"+ex.Message;
                }
                finally
                {
                    dco.conn.Close();
                }
            }
        }

        //读取列表中未被采集的文章,进行采集
        private void getList()
        {
            label4.Text = "文章列表成功,正在读取未被采集的文章...";
            DataSet ds = new DataSet();
            string sqlstr = "select * from list where isc=0";
            dco.OpenConn();
            ds=dco.ExecuteDataSet(sqlstr);
            dco.conn.Close();
            List<Urls> l = new List<Urls>();
            foreach (DataRow r in ds.Tables[0].Rows)
            {
                Urls u = new Urls();
                u.Oid=(int)r["oid"];
                u.Title = r["title"].ToString();
                u.Url = r["url"].ToString();
                u.Isc = 0;
                u.Name=r["name"].ToString();
                l.Add(u);
            }
            label4.Text = "读取未被采集的文章成功,未被采集的文章" + l.Count + "篇...";
            list = l;//真正需要采集的文章,去除了重复项,已采集过的项
        }


        //采集内容
        private void colectArticle()
        {
            if (list.Count < 1)
            {
                return;
            }
            else
            {
                label4.Text = "开始采集文章内容...";
                List<Article> arl = new List<Article>();
                string htmlcode = null;
                dco.OpenConn();
                foreach (Urls u in list)
                {
                    if (u.Title != "")
                    {
                        label4.Text = "正在采集文章"+u.Title;
                        Task t = xmldao.getOne(u.Name, xdoc);
                        htmlcode = Colect.GetHtmlSource(u.Url,t.Ecode);
                        htmlcode = Colect.SniffwebCode(htmlcode, t.Contentf, t.Contente);
                        Article ar = new Article();
                        ar.Author = Colect.SniffwebCode(htmlcode, t.Authorf, t.Authore);
                        ar.Source = Colect.SniffwebCode(htmlcode, t.Sourcef, t.Sourcee);
                        ar.Postdate = Colect.SniffwebCode(htmlcode, t.Datef, t.Datee);
                        ar.Content = Regex.Replace(Colect.SniffwebCode(htmlcode, t.Articlef, t.Articlee), "<[^>]*>", "");
                        ar.Title = u.Title;
                        ar.Url = u.Url;
                        ar.Category = t.Category;
                        arl.Add(ar);
                        string sqlstr = "update list set isc=1 where oid="+u.Oid;
                        dco.ExceteQuery(sqlstr);
                    }
                }
                dco.conn.Close();
                label4.Text = "采集文章内容完毕...";
                articles = arl;
            }
        }

        //保存采集到的文章
        private void saveArticle()
        {
            if (articles.Count < 1)
            {
                label4.Text = "没有新文章需要采集..,采集结束";
                return;
            }
            else
            {
                label4.Text = "采集文章保存开始...";
                dco.OpenConn();
                foreach (Article ar in articles)
                {
                    string sqlstr = "insert into article (title,url,postdate,source,content,category,author) values ('" + ar.Title + "','" + ar.Url + "','" + ar.Postdate + "','" + ar.Source + "','" +ar.Content+ "','" +ar.Category+ "','" +ar.Author+ "')";
                    dco.ExceteQuery(sqlstr);
                }
                dco.conn.Close();
                label4.Text = "采集文章保存完毕,本次采集文章" + articles.Count + "篇,采集结束";
            }

        }
 
分享到:
评论

相关推荐

    Daq_Test.zip_C# ni8501卡_DAQ C#_NI采集程序_采集

    标题中的“Daq_Test.zip_C# ni8501卡_DAQ C#_NI采集程序_采集”揭示了本主题的核心内容,这是一个关于使用C#编程语言与NI(National Instruments)ni8501数据采集卡进行数据采集的程序。在IT领域,DAQ(Data ...

    优化数据采集程序_Opc采集程序_opc协议dcs字段_opc_C#_DCS_

    通过以上步骤,我们可以构建一个高效且可靠的数据采集程序,用于监控和分析DCS系统的运行状况,从而为工厂的生产决策提供有价值的信息。在实际应用中,还需要考虑数据的安全性、系统的可扩展性和与其他系统的集成...

    c#读取DLT645-2007电力协议,项目源码

    在这个项目中,C#用于编写读取和处理电表数据的代码,利用其强大的类型系统和面向对象特性来实现高效、可维护的程序。 2. DLT645-2007协议:这是中国电力行业制定的一种电能表通信规约,用于智能电表的远程数据采集...

    C# web 图片采集

    本主题将深入探讨"C# Web 图片采集"这一技术,它涉及到如何利用C#编写程序来自动化地从Web上获取和处理图片。这是一项实用的技能,对于数据分析、内容抓取以及某些Web服务的构建都有重要的应用价值。 首先,我们要...

    PLC数据采集程序

    PLC(可编程逻辑控制器)数据采集程序是工业自动化领域中的关键组成部分,它允许系统监控并获取PLC的状态信息,以便进行数据分析、故障诊断或远程控制。本项目基于C#编程语言,利用Microsoft Visual Studio 2013开发...

    Fanuc机床Focas开发包 数据采集C#

    总结来说,Fanuc机床Focas开发包是连接C#应用程序与Fanuc数控系统的桥梁,它为开发者提供了全面的学习资料和实践工具,帮助实现高效的数据采集和分析,推动智能制造的发展。无论你是经验丰富的程序员还是初入行业的...

    激光所激光测距数据采集C#代码.zip

    标题中的“激光所激光测距数据采集C#代码”表明这是一个使用C#编程语言开发的系统,主要用于激光测距数据的采集。在IT领域,激光测距是一种利用光的传播时间来测量距离的技术,通常应用于各种工程、测绘、机器人导航...

    DirectShowLib.NET USB摄像头,音视频数据流采集_vastmpo_C#音视频采集_

    DirectShowLib.NET是一个开源库,专门用于在C#编程环境中实现多媒体流处理,尤其是音视频数据的采集。这个库是DirectShow的.NET包装器,它为开发者提供了方便的方式来访问和控制USB摄像头以及其他支持DirectShow的...

    海康相机采集图像例程C#.zip

    海康相机采集图像例程C#是一个针对海康相机进行图像采集的程序示例,它使用C#编程语言实现,确保了与海康相机的稳定交互。本例程旨在帮助开发者理解和掌握如何通过编程控制海康相机进行图像的拍摄、传输和处理。以下...

    C# 串口数据采集小DEMO

    在IT行业中,串口通信是一种常见且重要的数据...总之,"C# 串口数据采集小DEMO"是一个实用的示例,它涵盖了C#编程、串口通信、事件处理、文件操作等多个关键知识点,可以帮助开发者理解和实践串口数据采集的整个流程。

    C# 商圈数据采集代码

    总的来说,"C# 商圈数据采集代码"是一个综合性的项目,涵盖了网络编程、数据库操作、数据处理等多个IT领域的知识,对于理解和实践数据采集流程具有很高的学习价值。通过这个项目,开发者可以深入理解如何利用C#进行...

    完整 可运行的 c# +MTConnect 采集工程

    使用这个C#工程,你可以实现对马扎克或其他MTConnect兼容设备的数据采集。只需修改配置文件中的设备地址,就可以将程序指向不同的设备,从而实现跨设备的数据集成。 **MTConnectSharp-master文件** ...

    DXGI 桌面采集流程 简单示例

    在游戏开发、屏幕捕获、桌面录制等领域,DXGI桌面采集流程扮演着关键角色。下面将详细介绍DXGI桌面采集流程的简单示例。 一、初始化DXGI 在开始桌面采集之前,首先需要初始化DXGI环境。这包括创建一个`IDXGIFactory...

    C#(Csharp)多线程HTTP并发请求(HttpWebRequest)采集蜘蛛

    通过良好的设计和优化,可以构建出能够处理大量并发请求的采集程序,同时确保对目标网站的影响最小化。在实际应用中,还需要考虑爬虫的道德规范,尊重网站的Robots协议,避免对服务器造成过大的负担。

    c#程序mes系统源码

    MES(Manufacturing Execution System,制造执行系统)是现代工业生产中的关键组成部分,主要用于管理工厂的生产流程,提供实时的数据采集、监控、控制以及报告功能。C#作为.NET框架的主要编程语言,因其强大的类库...

    C#采集器示例代码 vs工程

    下面我们将深入探讨C#采集器的一些关键知识点: 1. **HttpClient**:HttpClient类是.NET Framework和.NET Core中的核心组件,用于执行HTTP请求。创建一个HttpClient实例,设置请求头,如User-Agent,然后调用...

    C#新浪微博采集分析平台

    总的来说,"C#新浪微博采集分析平台"融合了C#编程、网络爬虫、数据库管理、人工智能等多种技术,实现从数据抓取到分析的全流程。它不仅展示了C#在复杂任务中的灵活性和实用性,也为社交媒体数据的研究提供了有力工具...

    C# + Visionpro 源码程序 6相机 多线程 工程项目

    以下是对这个工程项目关键知识点的详细解析: 1. **C#编程语言**:C#是微软开发的一种面向对象的编程语言,广泛应用于Windows平台的软件开发,包括桌面应用、游戏、移动应用以及服务器端应用。在这个项目中,C#作为...

    大恒摄像机-连续采集图像

    整个流程可以分为两个主要阶段:**初始化阶段**与**采集控制阶段**。 - **初始化阶段**:主要负责打开摄像头,并设置好相关的参数。 - **采集控制阶段**:在此阶段,程序会根据用户指令(如启动或停止采集)来控制...

    沙迪克 慢走丝 机床通讯工程(C#)

    这个文件很可能是沙迪克机床的测试程序或者是一个示例工程,用于演示如何使用C#与EzAoT(可能是沙迪克的一种通讯协议或接口)进行通讯。开发者可以通过这个文件了解具体的代码实现和通讯流程,以便于在实际项目中...

Global site tag (gtag.js) - Google Analytics