`

新闻采集源码可自写规则

阅读更多

 

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Text.RegularExpressions;
using System.Collections;
using System.IO;
using System.Net;
using System.Text;
namespace NewsCollection
{
    public partial class SiteEdit : System.Web.UI.Page
    {
        string urlData = "";
        protected void Page_Load(object sender, EventArgs e)
        {
            this.BtCollection.Attributes.Add("onclick", "Status.showInfo('加载中');");
            if (!Page.IsPostBack)
            {
                AjaxAction();
                BindData();
            }
        
        }
        public string GetRequest(string key)
        {
            key = Convert.ToString(Request[key]??"");
            key = key==null?(""):(key);
            return key;
        }
        public void AjaxAction()
        {
            string isAjax = GetRequest("isAjax").ToLower();
            if (isAjax == "true")
            {
                string state = "";
                string action = this.GetRequest("action").ToLower();
                string values = this.GetRequest("values");
                if (action == "newsbody")
                {
                    string modelstart = this.GetRequest("modelstart");
                    string modelend = this.GetRequest("modelend");
                    string modelbody = this.GetRequest("modelbody");
                    string siteUrl = this.GetRequest("siteUrl");
                    ArrayList al = this.GetModelData(modelstart, modelend, modelbody, siteUrl);
                    StringBuilder sb = new StringBuilder();
                    foreach (string s in al)
                    {
                        sb.Append(s);
                    }
                    state = sb.ToString();
                }
                else if (action == "newsdetail")
                {
                    string modelstart = this.GetRequest("modelstart");
                    string modelend = this.GetRequest("modelend");
                    string modelbody = this.GetRequest("modelbody");
                    string siteUrl = this.GetRequest("siteUrl");
                    string newsTitleStart = this.GetRequest("newsTitleStart");
                    string newsTitleEnd = this.GetRequest("newsTitleEnd");
                    string newsContentStart = this.GetRequest("newsContentStart");
                    string newsContentEnd = this.GetRequest("newsContentEnd");
                    state = GetNews(GetModelData(modelstart, modelend, modelbody, siteUrl), newsTitleStart, newsTitleEnd, newsContentStart, newsContentEnd);
                }
                else
                {
                    state = "test Ajax";
                }
                Response.Clear();
                Response.Write(state);
                Response.End();
            }
        }
        public void BindData()
        {
            string Gid = Convert.ToString(Request["Gid"] ?? "");
            if (Gid.Length > 0)
            {
                Beans.Sites sites = new Beans.Sites();
                sites.Gid = Gid;
                sites = sites.SelectById();
                TbSiteName.Text  = sites.SiteName;
                TbSiteUrl.Text =sites.SiteUrl;
                TbSiteModelStart.Text = sites.SiteModelStart;
                TbSiteModelEnd.Text =sites.SiteModelEnd;
                TbSiteModelBody.Text = sites.SiteModelBody;
                TbNewsTitleStart.Text =sites.NewsTitleStart;
                TbNewsTitleEnd.Text =sites.NewsTitleEnd;
                TbNewsContentStart.Text =sites.NewsContentStart;
                TbNewsContentEnd.Text =sites.NewsContentEnd;
            }
        }
        protected void BtEdit_Click(object sender, EventArgs e)
        {
            string message = "系统错误请重试";
            string script = "history.go(-1)";
            string Gid = Convert.ToString(Request["Gid"]??"");
            Beans.Sites sites = new Beans.Sites();
            sites.SiteName = TbSiteName.Text.Trim();
            sites.SiteUrl = TbSiteUrl.Text.Trim();
            sites.SiteModelStart = TbSiteModelStart.Text.Trim();
            sites.SiteModelEnd = TbSiteModelEnd.Text.Trim();
            sites.SiteModelBody = TbSiteModelBody.Text.Trim();
            sites.NewsTitleStart = TbNewsTitleStart.Text.Trim();
            sites.NewsTitleEnd = TbNewsTitleEnd.Text.Trim();
            sites.NewsContentStart = TbNewsContentStart.Text.Trim();
            sites.NewsContentEnd = TbNewsContentEnd.Text.Trim();
            if (Gid.Length > 0)
            {
                sites.Gid=Gid;
                if (sites.Update())
                {
                    message = "修改成功!";
                }
             
            }
            else
            {
                if (sites.Add())
                {
                    message = "添加成功!";
                }
              
            }
            Response.Write("<script type='text/javascript'>alert('"+message+"');"+script+"</script>");
         
        }

        protected void BtCollection_Click(object sender, EventArgs e)
        {
            GetNews(GetModelData(TbSiteModelStart.Text.Replace("(", "\\(").Replace(")", "\\)").Replace(".", "\\."), TbSiteModelEnd.Text.Replace("(", "\\(").Replace(")", "\\)").Replace(".", "\\."), TbSiteModelBody.Text, TbSiteUrl.Text), TbNewsTitleStart.Text.Trim(), TbNewsTitleEnd.Text.Trim(), TbNewsContentStart.Text.Trim(), TbNewsContentEnd.Text.Trim());
     
           // GetNews(GetModelData(TbSiteModelStart.Text.Replace("(", "\\(").Replace(")", "\\)").Replace(".", "\\."), TbSiteModelEnd.Text.Replace("(", "\\(").Replace(")", "\\)").Replace(".", "\\."), TbSiteModelBody.Text, TbSiteUrl.Text));
        }
        public ArrayList GetModelData(string modelstart,string modelend,string modelbody,string SiteUrl)
        {

            ArrayList al = new ArrayList();
            string content = GetHttpData(SiteUrl,"gb2312");
            Regex reg = new Regex(modelstart+"(?<newsBody>[\\s\\S]*)"+modelend, RegexOptions.IgnoreCase | RegexOptions.Multiline);
            Match mat = reg.Match(content);
            //TbContent.Text = mat.Groups["newsBody"].Value.ToString();
            Regex regurl = new Regex(modelbody.Replace("_url_", "(?<url>[^\"'\\s]+)"), RegexOptions.IgnoreCase | RegexOptions.Singleline);
            Match maturl = regurl.Match(mat.Groups["newsBody"].Value.ToString());
            while (maturl.Success)
            {
                //z-zA-A0-9/\\.:
                string temp = maturl.Groups["url"].Value;
                al.Add(temp);
                Response.Write(temp.StartsWith("http://") ? (temp) : (temp.Insert(0, "http://" + SiteUrl.Replace("http://","").Substring(0, SiteUrl.LastIndexOf("/")))) + "<br>");
                maturl = maturl.NextMatch();
            }
            return  al;
        }
    
        public string  GetNews(ArrayList al,string titleStart,string titleEnd,string contentStart,string contetnEnd)
        {
            StringBuilder sb = new StringBuilder();
            if (al != null)
            {
            
                foreach (string s in al)
                {

                    Regex reg = new Regex(titleStart.Replace("(", "\\(").Replace(")", "\\)") + "(?<title>[^<]*)" + titleEnd.Replace("(", "\\(").Replace(")", "\\)") + "[\\s\\S]+" + contentStart.Replace("(", "\\(").Replace(")", "\\)") + "(?<content>[\\s\\S]+)" + contetnEnd.Replace("(", "\\(").Replace(")", "\\)"), RegexOptions.IgnoreCase | RegexOptions.Multiline);
                    Match mat = reg.Match(GetHttpData(s, "gb2312"));
                    //Response.Write(string.Format("news:{0}<br>content:{1}<br>",mat.Groups["title"].Value,mat.Groups["content"].Value));
                    Beans.News news = new Beans.News();
                    news.Title = mat.Groups["title"].Value;
                    news.Typeid = Convert.ToString(Request["Gid"]);//mat.Groups["title"].Value;
                    news.From = this.TbSiteName.Text;//mat.Groups["content"].Value;
                    news.Content = mat.Groups["content"].Value;
                    news.Add();
                    sb.AppendFormat("title:{0}", mat.Groups["title"].Value);
                }
            }
            return sb.ToString();
        }
        public string GetHttpData(string sUrl, string encoding)
        {
            string sRslt = null;
            WebResponse oWebRps = null;
            WebRequest oWebRqst = WebRequest.Create(sUrl);
            oWebRqst.Timeout = 50000;
            try
            {
                oWebRps = oWebRqst.GetResponse();
            }

            finally
            {
                if (oWebRps != null)
                {
                    StreamReader oStreamRd = new StreamReader(oWebRps.GetResponseStream(), System.Text.Encoding.GetEncoding(encoding));
                    sRslt = oStreamRd.ReadToEnd();
                    oStreamRd.Close();
                    oWebRps.Close();
                }
            }
            return sRslt;
        }

    

   
    }
}

 

分享到:
评论

相关推荐

    正规全自动采集视频站源码,无需数据库

    1. 搭建教程.txt:这是一个文本文件,可能包含了详细的步骤指南,指导用户如何使用源码搭建视频网站,包括环境配置、源码部署、设置自动化采集规则等过程,对于初学者来说是十分重要的参考资料。 2. 108源码网-...

    新闻自动采集系统(开源c#源码).rar

    8. **UI界面设计**:新闻采集系统可能还包括一个用户界面,供用户设置采集规则、查看采集结果等。C#的Windows Forms或WPF框架可以用来创建这样的界面。 9. **定时任务**:系统可能集成了定时任务功能,使用Windows...

    美容新闻免自动采集淘客源码 v1.0

    美容新闻淘客免维护全自动采集1.采集瑞丽女性美容频道文章,免维护全自动采集2.可自定义网站标题,关键字,描述等3.可选择是否应用新浪SAE平台 支持 新浪SAE环境 与普通环境自由切换4.自定义推广产品5.自定义广告链接6....

    新闻采集器源码

    新闻采集器源码是一种用于自动抓取互联网上公开发布新闻数据的程序,它能够帮助开发者高效地收集、整理和分析大量的新闻信息。这种源码通常包含了一系列的技术实现,包括网络爬虫、数据解析、存储以及可能的自动化...

    C#写的一个新闻采集系统源码

    【新闻采集系统源码解析】 新闻采集系统是用于自动抓取互联网上公开的新闻数据,进行筛选、存储和处理的工具。在这个系统中,C#作为主要编程语言,以其强大的.NET框架为依托,构建了一个高效、灵活的数据获取平台。...

    asp超强采集源码v1.10

    通过这款ASP超强采集源码,开发者或网站管理员可以自动化获取网络上的信息,例如新闻、产品数据、评论等,从而节省手动搜集和整理的时间。然而,需要注意的是,任何数据采集活动都应遵循网络道德和法律法规,尊重...

    全网热搜热榜资讯头条自动采集聚合系统源码 后端Python

    2.自带30几个常用网站采集规则 3.多线程抓取,30+网站5秒内采集完毕 4.相同网站放在一个框架内,可局部刷新和滚动 5.更新时间显示(按采集页的自带更新时间或按时间排序的第一条时间采集,没有的为采集完成时间) 6....

    自动新闻采集系统

    1. **网络爬虫**:网络爬虫是自动新闻采集系统的基础,它负责遍历互联网上的新闻网站,按照预设的规则抓取网页内容。例如,`news.jsp`可能是一个新闻页面的模板,系统会通过解析这个页面的结构来确定如何抓取新闻...

    电影站源码带采集

    在描述中提到的“免费电影站源码带5条采集规则”,这意味着该源码附带了数据采集功能,这5条采集规则可能涉及从其他电影资源网站抓取信息,如电影海报、简介、演员表、评分和评论等。采集规则是通过特定算法或正则...

    114套新闻网站源码+采集规则+安装使用教程-网络公司建站资源-源码大小6G网盘链接提取码下载 .txt

    系统自身集成了网易,新浪,搜狐,中新网,中华网等11家官方新闻接口,新闻采集发布可以根据宝塔面板的计划任务来实现每一个新闻网站都自动采集,自动发布,完全的零操作,零维护运营新闻平台,通过计划任务时间的间隔...

    仿腾讯网地方新闻门户网源码v1.0

    仿腾讯网地方新闻门户网源码,整站程序带数据网站源码(带采集)可生成静态,是做资讯门户站的绝对首选哦。 本套系统后台功能强大,自带了多条采集规则,可采集各个栏目不同的新闻,后台可以直接一键生成静态页面,...

    114套新闻网站源码+采集规则+安装使用教程-网络公司建站资源

    系统自身集成了网易,新浪,搜狐,中新网,中华网等11家官方新闻接口,新闻采集发布可以根据宝塔面板的计划任务来实现每一个新闻网站都自动采集,自动发布,完全的零操作,零维护运营新闻平台,通过计划任务时间的间隔...

    区块链快讯网站源码带采集.zip

    区块链快讯网站源码是用于构建一个能够实时更新和展示区块链行业新闻资讯的平台。这个源码包包含了必要的组件和配置,使开发者或管理员能够快速搭建一个功能完备的网站。源码基于PHP编程语言,这是一种广泛使用的...

    PHP实例开发源码—美容新闻免自动采集淘客源码 php版.zip

    【标题】"PHP实例开发源码—美容新闻免自动采集淘客源码 php版.zip" 涉及的是一款基于PHP编程语言的淘客源码,主要用于构建一个美容新闻自动采集系统。淘客源码是互联网营销领域的一种常见工具,它帮助用户自动化地...

    新闻资讯网站源码 带手机版和采集_源码下载.zip

    开发环境:帝国cms 7.2 GBK ...使用帝国7.2 GBK版二次开发,程序具有极好的稳定,安全,高性能等优点! 二次开发功能: PC版: 1、增加文章Ajax收藏,...温馨提醒:此火车头采集规则已经失效 需要火车头采集规则的请自己

    WordPress内核站群全自动新闻采集发布源码

     WordPress内核站群全自动新闻采集发布源码,单站专用,【未测试源码主题,仅供参考学习】  内置配置好的多个采集规则,简单修改数据库即可上线,可后台自行替换模板(可替换MIP模板)  3.1、百度搜索“wp模板...

    新闻自动采集系统ccf

    新闻自动采集系统CCF是一款基于C#编程语言的软件应用,利用了Microsoft的Visual Studio 2005 .NET开发环境。此系统的核心功能在于自动化地收集、整理和管理网络上的新闻信息,对于数据挖掘、信息监控以及新闻分析等...

    马克斯X站h站源码程序整站x站带采集规则

    【马克斯X站h站源码程序整站x站带采集规则】是一个针对特定类型网站的源代码包,主要用于建立类似“H站”的站点。这个源码程序包含了完整的网站架构和功能模块,允许用户快速搭建并自定义一个具有互动性和内容抓取...

    ffcms源码加采集

    这个源码包“ffcms源码加采集”显然包含了FFCMS的核心代码以及一个额外的采集功能,使得用户能够自动抓取网络上的数据,如新闻、文章等,从而丰富网站内容。下面将详细介绍FFCMS及其相关知识点。 1. **FFCMS核心...

Global site tag (gtag.js) - Google Analytics