一段时间没接触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; } } }
相关推荐
在数据采集系统中,C# 可用于构建稳定的后台服务,处理大量数据的读取、存储和处理任务。 其次,数据采集(SmartSpider)是系统的关键功能之一。数据采集通常涉及网络爬虫技术,用于自动化地从互联网上抓取信息。C#...
1. **c#_ni8501卡**:指的是C#代码库或者示例代码,可能用于驱动和控制ni8501数据采集卡。 2. **daq_c#**:表示这是使用C#实现的数据采集(DAQ)系统。 3. **ni采集程序**:指的是由National Instruments提供的软件...
Balser SDK 和 National Instruments的VisionPro是两个在计算机视觉领域广泛应用的工具,它们结合使用能够高效地实现图像采集和处理任务。在这个项目中,我们看到一个使用C#编程语言实现的源码,它展示了如何利用这...
在本项目中,C#被选为实现数据采集系统的主要工具,因为其强大的.NET框架支持,提供了丰富的类库和组件,便于进行图形用户界面(GUI)设计、数据库交互以及网络通信等任务。 测井数据采集系统通常包括以下几个关键...
标题中的"C#网络爬虫-采集51job数据(html分析基于HtmlAgilityPack)"表明这个项目是使用C#编程语言实现的一个网络爬虫,它的主要任务是抓取51job网站上的数据。51job是中国知名的招聘网站,包含了丰富的职位信息、...
- 为了保证用户界面的流畅性,图像采集通常会在后台线程或异步任务中进行,使用C#的Task或async/await关键字可以轻松实现。 6. **权限管理:** - 从Windows 8开始,访问摄像头需要用户的明确许可。因此,确保应用...
- **线程池**: 利用ThreadPool,可以高效地并发处理多个数据采集任务。 - **Task Parallel Library (TPL)**: 提供了并行编程的高级API,如Parallel.Foreach和Task.Run。 7. **实际案例** - 网页登录抓取:模拟...
2. **创建数据采集任务**:在代码中,通过调用DAQmx API创建一个数据采集任务,指定DAQ设备,如FRM11,并设定采集参数,如采样率1000Hz。 3. **配置输入通道**:设置DAQ设备的输入通道,比如模拟输入,定义电压范围...
1. **C#编程基础**:C#是Microsoft开发的一种现代、类型安全的编程语言,适用于构建各种类型的应用程序,包括桌面应用、Web应用和移动应用。它支持面向对象编程,拥有丰富的类库和强大的.NET框架,使得图像处理变得...
它们的相机通常具备高速、高分辨率和稳定的性能,适合于精确的图像采集任务。 Halcon则是MVTec公司开发的一款强大的机器视觉软件,提供了全面的图像处理算法,包括形状匹配、模板匹配、OCR、条形码识别、2D/3D测量...
【C#采集器】是一种基于C#编程语言开发的数据采集工具,主要功能是抓取互联网上的各种网页内容,实现信息的自动化收集与处理。在给定的文件列表中,我们可以看到一些关键的文件,这些文件构成了一个简单的C# Web应用...
综上所述,这个C#上位机电表数据采集项目涉及了C#编程、上位机应用开发、电表通信协议、数据采集与处理、定时任务设定以及数据库管理等多个IT领域的重要知识点。通过深入学习和理解这些内容,开发者可以构建出更先进...
在C#编程环境中,声音(音频)采集是一个常见的任务,特别是在开发多媒体应用或者实时通信软件时。本项目基于LumiSoft库,在Visual Studio 2010环境下实现音频采集功能,充分利用了C#语言的强大特性和LumiSoft库提供...
本资源针对初学者提供了几个C#实现的视频采集示例,这将帮助新手理解如何利用C#进行多媒体处理,特别是视频捕获。下面我们将深入探讨这些知识点。 首先,我们来看"DirectShow"这个子目录。DirectShow是微软开发的一...
下面将详细讲解C#采集核心源码及其相关知识点。 一、C#基础 C#是一种面向对象的编程语言,由微软公司开发,它支持类、接口、泛型等现代编程特性。在进行网络数据采集时,C#的强类型和丰富的类库使得代码更易于维护...
总结来说,创建"C#采集网页数据小工具"涉及以下关键技术点: 1. 使用HtmlAgilityPack库解析和处理HTML。 2. 应用XPath查询来定位和提取所需数据。 3. 设计用户界面,允许用户输入XPath表达式。 4. 存储和操作采集到...
C#的`async/await`关键字可以帮助我们编写非阻塞的异步代码,使得在等待通信完成的同时,程序可以执行其他任务。 4. **错误处理**:在通信过程中可能会遇到各种问题,如连接中断、数据传输错误等。因此,良好的错误...
5. **定时任务**:如果需要持续采集,可以设置定时器,定期执行数据采集和存储操作。 6. **日志记录**:为了便于调试和问题排查,应记录操作日志,包括成功的数据采集和遇到的错误。 总的来说,"C# Modbus TCP/IP...
- 创建任务:使用`Task.Create()`方法创建一个数据采集任务。 - 添加通道:调用`AddAnalogInputChannel()`方法,指定通道类型(差分或单端),通道编号和范围。 - 设置采样率和数据缓冲区:设置`SampleRate`属性...
在IT行业中,数据采集是一项重要的任务,特别是在数据分析和预测领域。本项目名为“C# 双色球网页数据采集”,其目标是收集自2003年以来双色球彩票的历史销售数据。双色球是中国非常流行的一种彩票玩法,通过这个...