一段时间没接触C#了,最近三天写了一个采集网页的工具,来填充一下网页的内容。
先介绍程序主要有三个实体:采集的任务、文章列表、文章。
任务:为了传输,共享方便任务将存在xml中。
class Task { private string name; /// <summary> /// 采集任务名称 /// </summary> public string Name { get { return name; } set { name = value; } } private string url; /// <summary> /// 采集任务列表地址 /// </summary> public string Url { get { return url; } set { url = value; } } private string ecode; /// <summary> /// 采集任务站点编码 /// </summary> public string Ecode { get { return ecode; } set { ecode = value; } } private string category; /// <summary> /// 采集任务列表栏目名 /// </summary> public string Category { get { return category; } set { category = value; } } private string listareaf; /// <summary> /// 采集任务列表区域开始标志 /// </summary> public string ListAreaf { get { return listareaf; } set { listareaf = value; } } private string listareae; /// <summary> /// 采集任务列表区域结束标志 /// </summary> public string ListAreae { get { return listareae; } set { listareae = value; } } private string rextitle; /// <summary> /// 采集任务文章标题和链接的正则 /// </summary> public string RexTitle { get { return rextitle; } set { rextitle = value; } } private string contentf; /// <summary> /// 采集任务文章内容区域开始标志 /// </summary> public string Contentf { get { return contentf; } set { contentf = value; } } private string contente; /// <summary> /// 采集任务文章内容区域结束标志 /// </summary> public string Contente { get { return contente; } set { contente = value; } } private string articlef; /// <summary> /// 采集任务文章内容开始标志 /// </summary> public string Articlef { get { return articlef; } set { articlef = value; } } private string articlee; /// <summary> /// 采集任务文章内容结束标志 /// </summary> public string Articlee { get { return articlee; } set { articlee = value; } } private string authorf; /// <summary> /// 采集任务文章作者开始标志 /// </summary> public string Authorf { get { return authorf; } set { authorf = value; } } private string authore; /// <summary> /// 采集任务文章作者结束标志 /// </summary> public string Authore { get { return authore; } set { authore = value; } } private string sourcef; /// <summary> /// 采集任务文章来源开始标志 /// </summary> public string Sourcef { get { return sourcef; } set { sourcef = value; } } private string sourcee; /// <summary> /// 采集任务文章来源结束标志 /// </summary> public string Sourcee { get { return sourcee; } set { sourcee = value; } } private string datef; /// <summary> /// 采集任务文章日期开始标志 /// </summary> public string Datef { get { return datef; } set { datef = value; } } private string datee; /// <summary> /// 采集任务文章日期结束标志 /// </summary> public string Datee { get { return datee; } set { datee = value; } } private string state; /// <summary> /// 采集任务状态 /// </summary> public string State { get { return state; } set { state = value; } } }
文章列表:取得以后会存在本地access数据库
class Urls { private string title; /// <summary> /// 标题 /// </summary> public string Title { get { return title; } set { title = value; } } private string url; /// <summary> /// 链接 /// </summary> public string Url { get { return url; } set { url = value; } } private int oid; /// <summary> /// id /// </summary> public int Oid { get { return oid; } set { oid = value; } } private int isc; /// <summary> /// 是否已采集 /// </summary> public int Isc { get { return isc; } set { isc = value; } } private string name; /// <summary> /// 任务名,和采集任务多对一关系 /// </summary> public string Name { get { return name; } set { name = value; } } }
文章:也将其存在本地access数据库
class Article { private string category; /// <summary> /// 文章类别 /// </summary> public string Category { get { return category; } set { category = value; } } private string url; /// <summary> /// 文章连接地址 /// </summary> public string Url { get { return url; } set { url = value; } } private string title; /// <summary> /// 文章标题 /// </summary> public string Title { get { return title; } set { if (value == "" || value.Length <= 0) { throw new ApplicationException("文章的标题不能为空!"); } title = value; } } private int views; /// <summary> /// 文章浏览次数 /// </summary> public int Views { get { return views; } set { views = value; } } private int replys; /// <summary> /// 文章评论次数 /// </summary> public int Replys { get { return replys; } set { replys = value; } } private string postdate; /// <summary> /// 文章发布日期 /// </summary> public string Postdate { get { return postdate; } set { postdate = value; } } private string author; /// <summary> /// 文章作者 /// </summary> public string Author { get { return author; } set { author = value; } } private string source; /// <summary> /// 文章来源 /// </summary> public string Source { get { return source; } set { source = value; } } private string content; /// <summary> /// 文章内容 /// </summary> public string Content { get { return content; } set { content = value; } } private int oid; public int Oid { get { return oid; } set { oid = value; } } }
相关推荐
这是个人做的一个实用小项目,主要用于与下位机设备通信,将下位机采集的数据实时显示并记录,界面设计参考Windows任务管理器 这是个人做的一个实用小项目,主要用于与下位机设备通信,将下位机采集的数据实时显示...
15. 支持任务触发器,即可在采集任务完成后,自动触发执行其他任务(包括可执行文件或存储过程)。 16. 完善的日志功能:系统日志、任务执行日志、出错日志等等; 17. 系统提供MINI浏览器可用于捕获Cookie或POST...
C# IB Google 搜索结果采集模板, IEBrowser 类用于控制调试 WebBrowser 浏览器控件, 可实现 jQuery 等功能, 编写页面执行流程, 可以完成各种任务.
13. 提供计划任务,计划任务支持NETSpider采集任务、外部可执行文件任务、数据库存储过程任务(还在开发中); 14. 计划任务执行周期支持每天、每周及自定义运行间隔;最小单位为:半小时; 15. 支持任务触发器,即可...
注意:本源代码共有20章节,分五部分上传,名称分别为:明日科技《C#示例源代码》(1-4)、明日科技《C#示例源代码》(1-4)、明日科技《C#示例源代码》(5-8)、明日科技《C#示例源代码》(9-12)、明日科技《C#...
注意:本源代码共有20章节,分五部分上传,名称分别为:明日科技《C#示例源代码》(1-4)、明日科技《C#示例源代码》(1-4)、明日科技《C#示例源代码》(5-8)、明日科技《C#示例源代码》(9-12)、明日科技《C#...
15. 支持任务触发器,即可在采集任务完成后,自动触发执行其他任务(包括可执行文件或存储过程)。 16. 完善的日志功能:系统日志、任务执行日志、出错日志等等; 17. 系统提供MINI浏览器可用于捕获Cookie或POST数据...
本资源是基于labview的多路电机控制,并同时进行AD采集,实现labview多任务多通道的同步,并利用波形图表进行展示(包含改变波形图的缩放因子实现改变波形图横坐标步长)
为了保证不重复爬取使用Redis作hash表,所有爬取的任务都放到hash表中进行标记。 爬取太频繁会被知乎返回429(too many request),应对的策略是挂代理,一种方法是使用专业的云代理服务(有点贵),另一种是[自建代理...
注意:本源代码共有20章节,分五部分上传,名称分别为:明日科技《C#示例源代码》(1-4)、明日科技《C#示例源代码》(1-4)、明日科技《C#示例源代码》(5-8)、明日科技《C#示例源代码》(9-12)、明日科技《C#...
注意:本源代码共有20章节,分五部分上传,名称分别为:明日科技《C#示例源代码》(1-4)、明日科技《C#示例源代码》(1-4)、明日科技《C#示例源代码》(5-8)、明日科技《C#示例源代码》(9-12)、明日科技《C#...
使用c#开发的系统项目源码、数据集
通过8个典型应用实例,包括PC与PC、PC与单片机、PC与PLC、PC与远程I/O模块、PC与智能仪器、PC与无线数传模块、Pc与USB数据采集模块等组成的测控系统,利用SerialPort控件和MSComm控件编写C#.NET串口通信程序,...
通过8个典型应用实例,包括PC与PC、PC与单片机、PC与PLC、PC与远程I/O模块、PC与智能仪器、PC与无线数传模块、Pc与USB数据采集模块等组成的测控系统,利用SerialPort控件和MSComm控件编写C#.NET串口通信程序,...
C#示例源码 C#示例 C#源码 C#示例源代码 C#源代码 注:一共五部分,请全部下载完成后,放同一目录下解决即可。 目录: 第1章 窗体及菜单设计 实例001 自定义最大化、最小化和关闭按钮 2 实例002 磁性窗体的...
C#示例源码 C#示例 C#源码 C#示例源代码 C#源代码 注:一共五部分,请全部下载完成后,放同一目录下解决即可。 目录: 第1章 窗体及菜单设计 实例001 自定义最大化、最小化和关闭按钮 2 实例002 磁性窗体的...
C#示例源码 C#示例 C#源码 C#示例源代码 C#源代码 注:一共五部分,请全部下载完成后,放同一目录下解决即可。 目录: 第1章 窗体及菜单设计 实例001 自定义最大化、最小化和关闭按钮 2 实例002 磁性窗体的...
第1章 窗体及菜单设计 实例001 自定义最大化、最小化和关闭按钮 2 实例002 磁性窗体的设计 5 实例003 鼠标穿透窗体 12 实例004 窗体的浮动及隐藏 14 实例005 手动改变自制窗体的大小 16 实例006 自定义...
第1章 窗体及菜单设计 实例001 自定义最大化、最小化和关闭按钮 2 实例002 磁性窗体的设计 5 实例003 鼠标穿透窗体 12 实例004 窗体的浮动及隐藏 14 实例005 手动改变自制窗体的大小 16 实例006 自定义...
第1章 窗体及菜单设计 实例001 自定义最大化、最小化和关闭按钮 2 实例002 磁性窗体的设计 5 实例003 鼠标穿透窗体 12 实例004 窗体的浮动及隐藏 14 实例005 手动改变自制窗体的大小 16 实例...