內容采集(科技業(yè)的員工到底有多年輕(1),那么標識可以是(1))
優(yōu)采云 發(fā)布時(shí)間: 2021-12-12 17:36內容采集(科技業(yè)的員工到底有多年輕(1),那么標識可以是(1))
第一頁(yè)的logo,比如標題“科技行業(yè)的員工有多年輕(1)),那么logo就可以(1)
保存路線(xiàn)
采集內容的存儲目錄
分頁(yè)
表示采集的文章數據是分頁(yè)的,然后程序會(huì )根據設置的規則判斷是否是分頁(yè)的章節,如果是,則不重復添加標題。
例如
科技行業(yè)的員工有多年輕(1)
科技行業(yè)的員工有多年輕(2)
科技行業(yè)的員工有多年輕(3)
所以在采集的過(guò)程中,只會(huì )寫(xiě)一個(gè)標題【科技行業(yè)的員工有多年輕】
另存為文件
如果選中,來(lái)自 采集 的所有內容都將寫(xiě)入文件
開(kāi)始
啟動(dòng)采集并保存內容
測試
在消息框中顯示采集的效果
格式化表單
左邊是匹配的字符,后面是要替換的字符。
當程序運行時(shí),第二行(如果有兩行)的字符會(huì )被轉換成大寫(xiě)并組合在一起進(jìn)行格式化。
換行標簽、空白標簽、縮進(jìn)標簽
您可以輸入包括正則在內的字符進(jìn)行匹配
章節標題
{0} 表示采集 的編號(采集 將1) 添加到地址中,{1} 表示采集 的標題。
無(wú)障礙
輸入字符可以大小寫(xiě)轉換
編寫(xiě)新規則
編寫(xiě)采集 規則需要一定的正則表達式知識。如果您不明白,請閱讀此頁(yè)面:
任務(wù)以xml文件的形式保存,文件名格式為:任務(wù)名稱(chēng)-網(wǎng)站 name.xml
在任何任務(wù)狀態(tài)下,您只需要修改任務(wù)名稱(chēng),或網(wǎng)站名稱(chēng),然后單擊保存任務(wù)即可創(chuàng )建新任務(wù)。
如果名稱(chēng)相同,會(huì )提示是否覆蓋。
這里以博客園新聞為例
博客花園新聞是一個(gè)列表式的采集任務(wù)-一個(gè)頁(yè)面可以匹配多個(gè)頁(yè)面地址
使用firebug或其他前端調試工具,可以輕松獲得采集特性
例如下圖
點(diǎn)擊紅框【點(diǎn)擊查看頁(yè)面要素】,點(diǎn)擊頁(yè)面【創(chuàng )業(yè)公司如何評估-如何衡量公司潛力】的位置。
你可以找到html代碼
這樣就可以得到內容頁(yè)面的鏈接特征
創(chuàng )業(yè)公司如何估值——衡量公司潛力的方法
然后你需要觀(guān)察這個(gè)識別是否是唯一的特征,也就是這個(gè)特征匹配的就是你所期望的。否則,需要添加更多限制性功能。
將特征編寫(xiě)為匹配的正則表達式
來(lái)源描述
該解決方案包括 3 個(gè)項目
Forms 是一個(gè)窗口程序
框架是一個(gè)采集程序
Helper 是一個(gè)輔助程序
考慮到以后會(huì )加入不同的采集任務(wù),采用MDI形式。
Config目錄為默認配置
FrmFormatConfig 是內容格式化配置表單
FrmGatherWorker 是 采集 工作表
MDIParentMain 是表單容器
config 是一個(gè)內容格式化配置實(shí)體類(lèi)
Task是采集任務(wù)規則實(shí)體類(lèi)
工人是 采集 工作班級
Worker采集Work 類(lèi)描述
讓我們來(lái)看看3個(gè)主要事件
///
///錯誤觸發(fā)事件,傳入參數引起的異常對象,錯誤類(lèi)型,當前工作URL
///
publiceventActionstring>OnError;
///
///工作結束觸發(fā)事件
///
publiceventActionOnWorkEnd;
///
///Once/Address 采集 完成觸發(fā)事件,傳入參數采集 content title, content, URL
///
publiceventActionOnWorkItemEnd;
創(chuàng )建對象
Workerwork=newWorker(_httpRequest,_config,_task);
work.OnError+=w_OnError;
work.OnWorkItemEnd+=work_OnWorkItemEnd;
work.OnWorkEnd+=work_OnWorkEnd;
定義內容處理
///
///一旦(一個(gè)URL)采集完成,執行將內容寫(xiě)入文件的操作
///
privatevoidwork_OnWorkItemEnd(stringcurWebTitle,stringcurWebContent,stringcurUrl)
{
//將采集的內容寫(xiě)入文件流
byte[]byteWebContent=Encoding.UTF8.GetBytes(curWebContent);
如果(_task.IsSaveOnlyFile)
{
//如果當前內容標題為空,可能會(huì )被分頁(yè)
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("\nAlready 采集: {0}, URL: {1}".FormatWith(curWebTitle,curUrl));
Application.DoEvents();
}
其他及更多請下載源碼查看
其他
運行程序下載:
源碼下載請到開(kāi)源地址下載
開(kāi)源地址:
如果不明白github是如何下載源碼的,請看文章:
對采集感興趣的朋友,可以一起維護和貢獻代碼,讓大家輕松共享同一個(gè)采集框架。
QQ群:9524888
歡迎大家進(jìn)*敏*感*詞*流分享采集任務(wù)規則,討論技術(shù),討論生活……