文章采集程序(科技业的员工到底有多年轻(1),那么标识可以是(1))

优采云 发布时间: 2022-01-16 09:07

  文章采集程序(科技业的员工到底有多年轻(1),那么标识可以是(1))

  第一页的logo,比如标题【科技行业的员工有多年轻(1)】),那么logo可以是(1)

  保存路线

  采集内容存放目录

  寻呼

  表示采集的文章数据被分页了,那么程序会根据设置的规则判断是否是分页的章节,如果是,则不会重复添加标题。

  例如

  科技工作者到底有多年轻(1)

  科技工作者有多年轻(2)

  科技工作者到底有多年轻(3)

  然后在采集的过程中,只会写一个标题【科技行业的员工有多年轻】

  另存为文件

  如果选中,所有 采集 都将写入文件

  开始

  启动 采集 并保存内容

  测试

  消息框显示采集的效果

  格式设置表单

  

  左边是匹配的字符,后面是要替换的字符。

  当程序运行时,它会将第二行(如果有两行)中的字符的副本转换为大写,并将它们组合起来进行格式化。

  换行标签、空白标签、缩进标签

  您可以输入包括常规字符在内的字符进行匹配

  章节标题

  {0} 表示 采集 的序列号(采集 将 1) 添加到地址,{1} 表示 采集 所在的标题。

  可访问性

  可以将输入字符转换为大小写

  写新规则

  编写采集 规则需要一定的正则表达式知识。如果您不明白,请阅读此页面:

  任务以xml文件的形式保存,文件名格式为:任务名-网站name.xml

  

  在任何任务状态下,只需要修改任务名称,或者网站的名称,然后点击保存任务即可新建任务。

  如果名称相同,会提示是否覆盖。

  这是博客园新闻的一个例子

  博客园新闻是一个列表类型的采集任务——一个页面可以匹配多个页面地址

  使用firebug或其他前端调试工具,可以轻松搞定采集功能

  比如下图

  

  点击红色框【点击查看页面元素】,然后点击页面上的【创业公司如何评估——衡量公司潜力的方法】。

  你可以找到html代码

  这样就可以得到内容页的链接特征

  如何评估初创公司——衡量公司潜力的一种方法

  然后你需要观察这个标识符是否是一个唯一的特征,也就是这个特征匹配的是你所期望的。否则,需要添加更多限制性功能。

  将特征写为匹配的正则表达式

  

  源代码说明

  

  该解决方案包括 3 个项目

  Forms是一个windows程序

  框架是一个 采集 程序

  Helper 是一个辅助程序

  

  考虑到以后会加入不同的采集任务,采用MDI形式。

  config目录是默认配置

  FrmFormatConfig为内容格式化配置表

  FrmGatherWorker 是一个 采集 工作表

  MDIParentMain 是表单容器

  

  config是内容格式化配置实体类

  Task 是 采集 任务规则实体类

  Worker 是一个 采集 工作类

  

  Worker采集Worker 类说明

  先看3个主要事件

  

  ///

  ///错误触发事件,传入参数引发的异常对象,错误类型,当前工作的URL

  ///

  publiceventActionstring>OnError;

  ///

  ///工作结束时触发事件

  ///

  公共事件ActionOnWorkEnd;

  ///

  ///Once/Address 采集完成触发事件,传入参数采集的内容的标题、内容、URL

  ///

  publiceventActionOnWorkItemEnd;

  

  创建对象

  Workerwork=newWorker(_httpRequest,_config,_task);

  工作.OnError+=w_OnError;

  工作.OnWorkItemEnd+=work_OnWorkItemEnd;

  工作.OnWorkEnd+=work_OnWorkEnd;

  定义内容处理

  

  ///

  /// 一旦(URLs)采集完成,执行内容写入文件操作

  ///

  privatevoidwork_OnWorkItemEnd(stringcurWebTitle,stringcurWebContent,stringcurUrl)

  {

  //将采集的内容写入文件流

  byte[]byteWebContent=Encoding.UTF8.GetBytes(curWebContent);

  如果(_task.IsSaveOnlyFile)

  {

  // 如果当前内容标题为空,可能是分页的

  if(!string.IsNullOrEmpty(curWebTitle))

  {

  byte[]byteWebTitle=Encoding.UTF8.GetBytes(curWebTitle);

  _curSavaFile.Write(byteWebTitle,0,byteWebTitle.Length);

  }

  _curSavaFile.Write(byteWebContent,0,byteWebContent.Length);

  }

  别的

  {

  使用(FileStreamcurSavaFile2=newFileStream("{0}{1}.txt".FormatWith(_task.SavePath,curWebTitle),FileMode.OpenOrCreate,FileAccess.ReadWrite))

  {

  curSavaFile2.Write(byteWebContent,0,byteWebContent.Length);

  }

  }

  UpdateWorkMessage("已经 采集: {0}, URL: {1}".FormatWith(curWebTitle,curUrl));

  应用程序.DoEvents();

  }

  

  更多内容请下载源代码查看

  其他

  运行程序下载:

  源码下载请到开源地址下载

  开源地址:

  如果不知道如何在github上下载源码,请看文章:

  对采集感兴趣的朋友可以一起维护和贡献代码,让大家轻松共享同一个采集框架。

  QQ群:9524888

  欢迎大家进*敏*感*词*流分享采集任务规则,讨论技术,讨论生活……

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线