Hawk教程-命令行增量和自動(dòng)化專題

命令行增量和自動(dòng)化專題

Hawk雖然是圖形化軟件,但依然支持命令行和自動(dòng)化抓取吼鱼,本專題討論如何增量最住,和自動(dòng)化定時(shí)抓取婿崭,以及當(dāng)遇到錯(cuò)誤時(shí)(如網(wǎng)絡(luò)不通婆硬,導(dǎo)致一部分請(qǐng)求失敗)需要重試的場(chǎng)景苏遥。

1.命令行執(zhí)行

(本特性的測(cè)試還不完全饼拍,預(yù)計(jì)2018年11月發(fā)布)

由于大多數(shù)服務(wù)器都基于Linux實(shí)現(xiàn),因此跨平臺(tái)成為Hawk必備的功能田炭。但Hawk依賴的WPF(一種windows的圖形界面技術(shù))只能在windows上運(yùn)行师抄。 因此為了變通,可在Hawk上圖形化設(shè)計(jì)工作流教硫,并在其他平臺(tái)上解釋xml執(zhí)行叨吮。

  • 一種是實(shí)現(xiàn)Python的執(zhí)行器(etlpy),但由于Python和C#的眾多區(qū)別瞬矩,會(huì)導(dǎo)致很多不兼容性茶鉴,該方案已放棄。
  • 另一種方案景用,是通過(guò).NetCore實(shí)現(xiàn)跨平臺(tái)涵叮,我們采用了本方案。

定時(shí)抓取需依賴于Hawk的命令行實(shí)現(xiàn)HawkScheduler伞插, 它位于Hawk可執(zhí)行文件的同目錄中割粮。使用如下命令指定要執(zhí)行的工程文件路徑和任務(wù)名:

HawkScheduler -p project.xml -t task_name

使用HawkScheduler -h來(lái)獲得相關(guān)幫助。

注意媚污,由于命令行本身的性質(zhì)舀瓢,以下特性將不可用:

  • 寫入數(shù)據(jù)表: 將生成可執(zhí)行文件同目錄下,以數(shù)據(jù)表為名稱的txt文件
  • TODO:增加其他不可支持的特性

2.增量抓取

增量抓取比較困難耗美,各網(wǎng)站皆有不同京髓,此處我們提供一些技巧。

一種類型是新聞型的幽歼,按照時(shí)間排列朵锣,并更新最新的新聞,最樸素的思路是記錄上一次抓取的最后位置甸私。然后在新的一輪抓取中诚些,不停地向前獲取,直到發(fā)現(xiàn)上一次抓取后中斷。

此處需要兩個(gè)核心技術(shù)點(diǎn):

2.1.保存上一次存儲(chǔ)的關(guān)鍵字

首先找到代表數(shù)據(jù)特征的列(如ID诬烹,標(biāo)題等)砸烦,能唯一標(biāo)識(shí)該數(shù)據(jù)。如果找不到唯一的列绞吁,可通過(guò)合并多列來(lái)組合幢痘。

在這一列拖入更新到配置 , 輸入要更新的配置的名稱column,則在執(zhí)行時(shí)家破,該模塊每經(jīng)過(guò)一行數(shù)據(jù)颜说,就會(huì)自動(dòng)更新該列的值到全局配置(TODO:路徑)中。配合軟件的自動(dòng)保存機(jī)制汰聋,該值會(huì)隨時(shí)寫入配置文件中门粪。

2.2.下次執(zhí)行時(shí)定位到中斷點(diǎn)

在任務(wù)配置時(shí),添加正則過(guò)濾烹困,正則項(xiàng)的值填寫為{column}玄妈,代表從配置中讀取該值。

3.定時(shí)抓取

在實(shí)現(xiàn)命令行功能后髓梅,定時(shí)抓取也就變得非常簡(jiǎn)單了拟蜻。

在Linux平臺(tái)上,可使用crontab來(lái)執(zhí)行任務(wù)枯饿,具體可參考這里

在Windows上則可以使用任務(wù)計(jì)劃來(lái)執(zhí)行酝锅。可以參考這里

TODO: 增加更細(xì)致的寫法

4.回補(bǔ)數(shù)據(jù)方法

本功能簡(jiǎn)直是神器鸭你,Hawk能夠精確地記錄失敗的位置和上下文屈张,并在重試時(shí)將配置錯(cuò)誤和失敗部分補(bǔ)充回來(lái)。配置非常簡(jiǎn)單袱巨,但功能很強(qiáng)大阁谆。

開(kāi)啟該功能,需要在系統(tǒng)設(shè)置中勾選生成錯(cuò)誤集合, 則數(shù)據(jù)清洗在執(zhí)行時(shí)愉老,就會(huì)將錯(cuò)誤的信息保存到一張新表中场绿,除了當(dāng)時(shí)錯(cuò)誤時(shí)的參數(shù)輸入列之外,增加的列如下:

  • __SysETL: 產(chǎn)生錯(cuò)誤時(shí)的任務(wù)名
  • __SysTime: 錯(cuò)誤時(shí)間
  • __SysERROR: 錯(cuò)誤原因
  • __SysObjectID: 產(chǎn)生錯(cuò)誤的模塊唯一ID

出現(xiàn)錯(cuò)誤后嫉入,可使用如下流程創(chuàng)建補(bǔ)數(shù)據(jù)任務(wù):

  1. 根據(jù)錯(cuò)誤的信息焰盗,確定修改的策略,如增加延時(shí)咒林,改進(jìn)參數(shù)熬拒,修復(fù)bug等..
  2. 添加從數(shù)據(jù)表生成, 表名為剛才創(chuàng)建的錯(cuò)誤表表名。
  3. 可以按需拖入延時(shí)垫竞,或其他你希望的過(guò)濾澎粟,轉(zhuǎn)換等模塊
  4. 拖入重試補(bǔ)數(shù)據(jù), 勾選是否要執(zhí)行原來(lái)的執(zhí)行器蛀序。
  5. 如果想把回補(bǔ)的數(shù)據(jù)寫到另外一張表,則可拖入寫入數(shù)據(jù)表, 或?qū)懭霐?shù)據(jù)庫(kù). 或任何你想要處理的流程活烙。

在補(bǔ)數(shù)據(jù)時(shí)徐裸,盡量使用串行模式,以獲取更平穩(wěn)的表現(xiàn)啸盏≈睾兀可能在補(bǔ)充數(shù)據(jù)時(shí)會(huì)再次發(fā)生錯(cuò)誤,此時(shí)只要將寫入數(shù)據(jù)表的名稱改為新產(chǎn)生錯(cuò)誤的表名即可回懦。

其原理是定位到發(fā)生錯(cuò)誤的模塊气笙,并使用當(dāng)時(shí)的參數(shù)重新調(diào)用該模塊之后的任務(wù)。這就是流系統(tǒng)的強(qiáng)大之處粉怕。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末健民,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子贫贝,更是在濱河造成了極大的恐慌,老刑警劉巖蛉谜,帶你破解...
    沈念sama閱讀 217,542評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件稚晚,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡型诚,警方通過(guò)查閱死者的電腦和手機(jī)客燕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)狰贯,“玉大人也搓,你說(shuō)我怎么就攤上這事『桑” “怎么了傍妒?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,912評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)摸柄。 經(jīng)常有香客問(wèn)我颤练,道長(zhǎng),這世上最難降的妖魔是什么驱负? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,449評(píng)論 1 293
  • 正文 為了忘掉前任嗦玖,我火速辦了婚禮,結(jié)果婚禮上跃脊,老公的妹妹穿的比我還像新娘宇挫。我一直安慰自己,他們只是感情好酪术,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布器瘪。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪娱局。 梳的紋絲不亂的頭發(fā)上彰亥,一...
    開(kāi)封第一講書(shū)人閱讀 51,370評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音衰齐,去河邊找鬼任斋。 笑死,一個(gè)胖子當(dāng)著我的面吹牛耻涛,可吹牛的內(nèi)容都是我干的废酷。 我是一名探鬼主播,決...
    沈念sama閱讀 40,193評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼抹缕,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼澈蟆!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起卓研,我...
    開(kāi)封第一講書(shū)人閱讀 39,074評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤趴俘,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后奏赘,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體寥闪,經(jīng)...
    沈念sama閱讀 45,505評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評(píng)論 3 335
  • 正文 我和宋清朗相戀三年磨淌,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了疲憋。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,841評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡梁只,死狀恐怖缚柳,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情搪锣,我是刑警寧澤秋忙,帶...
    沈念sama閱讀 35,569評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站淤翔,受9級(jí)特大地震影響翰绊,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜旁壮,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評(píng)論 3 328
  • 文/蒙蒙 一监嗜、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧抡谐,春花似錦裁奇、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,783評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)溃肪。三九已至,卻和暖如春音五,著一層夾襖步出監(jiān)牢的瞬間惫撰,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,918評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工躺涝, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留厨钻,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,962評(píng)論 2 370
  • 正文 我出身青樓坚嗜,卻偏偏與公主長(zhǎng)得像夯膀,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子苍蔬,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容