文章采集程序(科技业的员工到底有多年轻(1),那么标识可以是(1))
优采云 发布时间: 2021-12-26 13:14文章采集程序(科技业的员工到底有多年轻(1),那么标识可以是(1))
第一页的logo,比如标题[科技行业的员工有多年轻(1)]),那么logo就可以(1)
保存路线
采集内容的存放目录
分页
表示对采集到的文章数据进行分页,然后程序会根据设置的规则判断是否为分页章节,如果是,则不会重复添加标题。
例如
科技行业的员工有多年轻(1)
科技行业的员工有多年轻(2)
科技行业的员工有多年轻(3)
征集过程中,只会写一个标题【科技行业的员工有多年轻】
另存为文件
如果选中,所有采集
的内容将写入文件
开始
开始采集
并保存内容
测试
在消息框中显示集合的效果
格式化表单
左边是匹配的字符,后面是要替换的字符。
当程序运行时,第二行(如果有两行)的字符会被转换成大写并组合在一起进行格式化。
换行标签、空白标签、缩进标签
您可以输入包括正则在内的字符进行匹配
章节标题
{0}代表藏品编号(加1)采集
地址,{1}代表藏品标题。
无障碍
输入字符可以大小写转换
编写新规则
编写集合规则需要一定的正则表达式知识。如果您不明白,请阅读此页面:
任务以xml文件的形式保存,文件名格式为:任务名称-网站名称.xml
在任何任务状态下,您只需修改任务名称或网站名称,然后单击“保存任务”即可创建新任务。
如果名称相同,会提示是否覆盖。
这里以博客园新闻为例
博客花园新闻是一个列表式的采集
任务——一个页面可以匹配多个页面地址
使用firebug或其他前端调试工具轻松获取集合特征
例如下图
点击红框【点击查看页面要素】,点击页面【创业公司如何评估-如何衡量公司潜力】的位置。
你可以找到html代码
这样就可以得到内容页面的链接特征
创业公司如何估值——衡量公司潜力的方法
然后你需要观察这个识别是否是唯一的特征,也就是这个特征匹配的就是你所期望的。否则,需要添加更多限制性功能。
将特征编写为匹配的正则表达式
来源描述
该解决方案包括 3 个项目
Forms 是一个窗口程序
框架是一个集合程序
Helper 是一个辅助程序
考虑到以后会增加不同的采集任务,采用MDI形式。
Config目录为默认配置
FrmFormatConfig 是内容格式化配置表单
FrmGatherWorker 是一个集合工作表
MDIParentMain 是表单容器
config 是一个内容格式化配置实体类
Task是一个集合任务规则实体类
Worker 是一个集合工作类
Worker 集合工作类说明
让我们来看看3个主要事件
///
///错误触发事件,传入参数引起的异常对象,错误类型,当前工作URL
///
publiceventActionstring>OnError;
///
///工作结束触发事件
///
publiceventActionOnWorkEnd;
///
///Once/Address集合完成触发事件,传入参数集合内容的标题、内容、URL
///
publiceventActionOnWorkItemEnd;
创建对象
Workerwork=newWorker(_httpRequest,_config,_task);
work.OnError+=w_OnError;
work.OnWorkItemEnd+=work_OnWorkItemEnd;
work.OnWorkEnd+=work_OnWorkEnd;
定义内容处理
///
///采集
一个(一个URL)完成后,执行将内容写入文件的操作
///
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);
}
别的
{
using(FileStreamcurSavaFile2=newFileStream("{0}{1}.txt".FormatWith(_task.SavePath,curWebTitle),FileMode.OpenOrCreate,FileAccess.ReadWrite))
{
curSavaFile2.Write(byteWebContent,0,byteWebContent.Length);
}
}
UpdateWorkMessage("\nCollected: {0}, URL: {1}".FormatWith(curWebTitle,curUrl));
Application.DoEvents();
}
其他及更多请下载源码查看
其他
运行程序下载:
源码下载请到开源地址下载
开源地址:
如果不明白github是如何下载源码的,请看文章:
对集合感兴趣的朋友可以一起维护和贡献代码,让大家轻松共享同一个集合框架。
QQ群:9524888
欢迎大家进*敏*感*词*流分享采集
任务规则,讨论技术,讨论生活……
发表于 2013-07-10 11:36 HackerVirus 阅读(464)评论(0)编辑