Hawk教程- 快速教程

快速教程

本文給不想看詳細(xì)教程的同學(xué)使用,仔細(xì)閱讀,可以讓你戰(zhàn)斗力爆棚:

1.界面和交互

1.1.主工作區(qū)

啟動(dòng)后,在歡迎頁面有三個(gè)tab頁: 新建任務(wù),任務(wù)市場(chǎng)和參數(shù)設(shè)置。歡迎頁面非常重要,能夠新建任務(wù),或者瀏覽相關(guān)文檔和幫助。

front.gif
  1. 新建任務(wù):雙擊圖標(biāo)即可新建和加載已有任務(wù)
  2. 點(diǎn)擊tab菜單【文件】可加載,保存任務(wù),任務(wù)為xml文件。
  3. 下側(cè)是【數(shù)據(jù)管理】,空白處右鍵可新建連接,連接名上右鍵可配置,支持本地文件(xls,txt,json),數(shù)據(jù)庫(mongodb,sqlite)。數(shù)據(jù)庫需要連接后才能使用,可勾選【自動(dòng)連接】.

1.2.狀態(tài)區(qū)

在Hawk主界面右側(cè)是當(dāng)前的狀態(tài),包括三個(gè)區(qū)域:

  • 已加載任務(wù)
  • 數(shù)據(jù)管理:可顯示生成的或從文件中導(dǎo)出的表
  • 工作線程視圖:正在執(zhí)行的任務(wù)都會(huì)顯示在這里
  1. 軟件右下角對(duì)應(yīng)的是【系統(tǒng)狀態(tài)視圖】,左右側(cè)分別是已加載的任務(wù)和數(shù)據(jù)集。
    左鍵查看,右鍵配置,空白處右鍵批量管理。 下面的圖標(biāo)可用于刪除,拷貝,保存等功能,把任務(wù)或數(shù)據(jù)集拖到圖標(biāo)上試試!
  2. 【網(wǎng)頁采集器】用于配置單個(gè)網(wǎng)頁的抓取規(guī)則,【數(shù)據(jù)清洗】用于打造清洗流程,并調(diào)用前者。 復(fù)雜任務(wù)會(huì)創(chuàng)建多個(gè)清洗并互相調(diào)用。

2.網(wǎng)頁采集器

網(wǎng)頁采集器 模擬了瀏覽器的設(shè)計(jì),填入網(wǎng)址,點(diǎn)擊刷新,即可獲取對(duì)應(yīng)地址的html源碼。

認(rèn)識(shí)到網(wǎng)頁是一棵樹(DOM)后,每個(gè)XPath對(duì)應(yīng)一個(gè)屬性,即可從網(wǎng)頁上獲取單個(gè)或多個(gè)文檔。網(wǎng)頁采集器的目的就是更快地通過手工或自動(dòng)配置找到最優(yōu)XPath。

2.1.工作模式

使用采集器,首先要按照抓取的目標(biāo),選擇合適的工作模式:

  • 多文檔: 會(huì)輸出多份文檔,通常在網(wǎng)頁的列表頁中使用, 如二手房的列表頁面,新聞的列表頁
  • 單文檔: 輸出單份文檔,一般在網(wǎng)頁的詳情頁中使用,如京東的訂單頁,新聞
  • 不進(jìn)行轉(zhuǎn)換: 直接輸出網(wǎng)頁源代碼,放置于Content列中

注意:

  • 一個(gè)復(fù)雜的頁面可能包含多個(gè)列表和詳情,因此模式的選擇主要取決于要抓取的數(shù)據(jù)是什么
  • 當(dāng)在 多文檔或 單文檔模式,且屬性數(shù)量為0時(shí),也和 不進(jìn)行轉(zhuǎn)換行為一致

2.2.基本操作

  • 左側(cè)的區(qū)域,顯示了html源碼和瀏覽器視圖(但不能執(zhí)行js),可通過上側(cè)tab頁切換。
  • 右側(cè)是配置區(qū)域,可對(duì)關(guān)鍵字進(jìn)行搜索,并對(duì)所有的屬性進(jìn)行管理。
  • 點(diǎn)擊【提取測(cè)試】,可預(yù)覽檢查配置結(jié)果。

在多文檔模式下,通常直接點(diǎn)擊右上角的手氣不錯(cuò),在彈出的結(jié)果下選擇所需數(shù)據(jù),可配置其名稱和XPath。點(diǎn)擊確定即可配置完畢。即可自動(dòng)獲取絕大多數(shù)網(wǎng)頁的目標(biāo)內(nèi)容。

[圖片上傳失敗...(image-39f458-1559958071956)]

可手工填入搜索字符,即可在網(wǎng)頁上快速定位元素和XPath,可在多個(gè)結(jié)果間快速切換,找到所需數(shù)據(jù)后,輸入屬性名稱后手工添加屬性。

2.3.高級(jí)功能

  1. 點(diǎn)擊【Http請(qǐng)求詳情】,可修改網(wǎng)頁編碼,代理,cookie和請(qǐng)求方式等,網(wǎng)頁出現(xiàn)亂碼可用
  2. 若希望自動(dòng)登錄,或獲取動(dòng)態(tài)頁面(ajax)的真實(shí)地址,填入搜索字符,點(diǎn)擊【自動(dòng)嗅探】,在彈出的瀏覽器中翻到對(duì)應(yīng)的關(guān)鍵字,Hawk就能自動(dòng)捕捉真實(shí)請(qǐng)求
  3. 超級(jí)模式下,Hawk會(huì)將源碼中的js,html,json都轉(zhuǎn)成html,從而使用手氣不錯(cuò), 更通用但性能較差
  4. 填寫【共享源】,本采集器同步共享源的【Http請(qǐng)求詳情】,避免重復(fù)設(shè)置cookie代理等。
  5. 詳情頁(單文檔模式)也可以手氣不錯(cuò)(Hawk3新功能),搜索所需字段,不需要添加到屬性列表,點(diǎn)擊手氣不錯(cuò)試試!
  6. 網(wǎng)頁地址也可以是本地文件路徑,如D:\target.html, 用其他方法保存網(wǎng)頁后,再通過Hawk分析網(wǎng)頁內(nèi)容

[圖片上傳失敗...(image-2f8a47-1559958071956)]

3.數(shù)據(jù)清洗

數(shù)據(jù)清洗可以通過組合多個(gè)不同的子模塊,生成多樣的功能,通過拖拽構(gòu)造出一個(gè)工作流,它能夠產(chǎn)生一個(gè)有限或無限的文檔序列。比如下面:

image_1auq4oooc1m8m9tc02sjv1j4o9.png-71.6kB
etl.gif

3.1.基本操作

  • 左側(cè)是所有模塊列表,分為生成,轉(zhuǎn)換,過濾和執(zhí)行四種類型,可通過名稱和拼音首字母快速檢索。順序組合可構(gòu)成復(fù)雜任務(wù)。
  • 右側(cè)是數(shù)據(jù)預(yù)覽,可將左側(cè)選中的模塊拖入到右側(cè)對(duì)應(yīng)列上。 雙擊每個(gè)列上面的模塊對(duì)其配置。將鼠標(biāo)??孔侄紊峡刹榭词褂媒榻B
  • 預(yù)覽時(shí),處理是串行的,數(shù)據(jù)不會(huì)被寫入,有緩存,調(diào)試所見即所得。 只有在執(zhí)行模式下才會(huì)并行快速執(zhí)行。
  • 執(zhí)行器可看做帶有副作用(如寫入文件)的轉(zhuǎn)換器,只有在執(zhí)行時(shí)才會(huì)運(yùn)行
  • 生成器通常位于任務(wù)開頭,可從文本,文件,數(shù)據(jù)庫讀取數(shù)據(jù)。生成器也能位于流的中間,通過多種模式與已有數(shù)據(jù)流組合
  • 下方菜單欄可點(diǎn)擊刷新,前后單步,可通過采樣量來修改預(yù)覽的數(shù)據(jù)量。配置完畢無誤后,左側(cè)面板點(diǎn)擊執(zhí)行即可。
  • 很多問題來自于模塊順序不對(duì),任何步驟錯(cuò)誤,會(huì)導(dǎo)致連鎖的問題,因此有必要使用單步調(diào)試,在調(diào)試到某步時(shí),拖入的模塊會(huì)插入到所在位置。

3.2.高級(jí)功能和技巧

  1. 輸入列一般不用配置,需要時(shí)可下拉選擇,也可手工輸入文本。列名不要為純數(shù)字,否則無法正常顯示。
  2. 關(guān)于Python轉(zhuǎn)換器:最后一行必須是可求值的表達(dá)式。例如有兩列a,b,轉(zhuǎn)換器輸出列為c,表達(dá)式為a+b,則c列內(nèi)容就是a+b。但表達(dá)式不能寫c=a+b; Python是強(qiáng)類型語言,輸入的數(shù)據(jù)可能是字符串或數(shù)字,因此必要時(shí)需要做類型轉(zhuǎn)換;通過填寫庫路徑,可讓轉(zhuǎn)換器調(diào)用第三方模塊。
  3. 可在任務(wù)的各個(gè)位置拖入多個(gè)執(zhí)行器(如【寫入數(shù)據(jù)表】),它保存的是當(dāng)前狀態(tài)的數(shù)據(jù)。
  4. 子任務(wù):任務(wù)可互相調(diào)用,功能非常強(qiáng)大,可用于處理多次跳轉(zhuǎn),詳情頁還包含列表的問題,比較復(fù)雜,需參考相關(guān)文檔。

3.3.對(duì)配置的約定

  • 具體數(shù)值,直接填入配置框即可
  • 涉及到輸入多個(gè)列名,多個(gè)分隔符等,都默認(rèn)用空格分割,例如a b c
  • 當(dāng)希望從本數(shù)據(jù)清洗中讀取其他列的數(shù)據(jù)到本參數(shù),使用方括號(hào)表達(dá)式,例如[col]
  • 當(dāng)希望從全局配置中讀取特定字段時(shí),使用大括號(hào)表達(dá)式,例如{YOUR_CONFIG}
  • 希望將多個(gè)列的數(shù)據(jù)合并作為參數(shù)時(shí),可先使用合并多列,再使用對(duì)應(yīng)的表達(dá)式
  • 配置子任務(wù)的模塊范圍時(shí):1:100表示從1到100, 2:-2表示從第2個(gè)模塊到倒數(shù)第二個(gè)模塊,可參考Python的slice寫法
  • 配置子任務(wù)的字段映射時(shí),可以用a:b c:d表示a列映射到b列,以此類推。

4.一些忠告

  1. Hawk除了做爬蟲,還能做數(shù)據(jù)清洗,甚至批量執(zhí)行命令,需要你來挖掘。
  2. Hawk對(duì)代理的支持不夠(免費(fèi)的就知足吧),避免過度抓取導(dǎo)致屏蔽。
  3. 記得經(jīng)常保存任務(wù),盡量將數(shù)據(jù)寫入到數(shù)據(jù)庫而非表里,否則程序可能崩潰難以挽回。

5.如何提問

Hawk是個(gè)免費(fèi)的系統(tǒng),因此沒有客服mm(誰請(qǐng)得起,設(shè)計(jì)者也不夠帥),因此好的問題能極大地提升解決問題的速度。請(qǐng)按照如下方式描述你的問題:

  • 抓取的網(wǎng)站地址,要抓取什么內(nèi)容,在頁面的什么位置,是什么范圍。
  • 如果能提供你的工程文件,可在附錄中給出,這能最大程度解決問題。
  • 如果是界面出現(xiàn)異常,請(qǐng)?zhí)峁┰谑裁喘h(huán)境下,點(diǎn)擊什么按鈕,報(bào)出什么異常,并發(fā)送所執(zhí)行文件夾的log.dat日志文件作為附件。
  • 操作系統(tǒng)版本,.Net Framework環(huán)境(不是必須)

請(qǐng)盡量避免如下提問方式,這樣的提問沒有任何意義,作者也無法解決你的問題:

  • XXX網(wǎng)站怎么爬
  • XXX不會(huì)用,用不了
  • XXX出問題了

提問按照如下優(yōu)先級(jí)進(jìn)行:

  1. 推薦使用Github的issue,方便其他朋友查閱已有的問題。: https://github.com/ferventdesert/Hawk/issues
  2. 加入QQ群: 546750531(Hawk數(shù)據(jù)抓取交流)
  3. 給作者發(fā)郵件: buptzym@qq.com
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • GitHub文檔鏡像 歡迎使用Hawk 快速教程 主要組件介紹 核心功能:Hawk工程Hawk任務(wù)市場(chǎng)數(shù)據(jù)表和數(shù)據(jù)...
    desert2017閱讀 1,682評(píng)論 0 1
  • GitHub文檔鏡像 歡迎使用Hawk 快速教程 主要組件介紹 核心功能:Hawk工程Hawk任務(wù)市場(chǎng)數(shù)據(jù)表和數(shù)據(jù)...
    desert2017閱讀 2,898評(píng)論 0 0
  • GitHub文檔鏡像 歡迎使用Hawk 快速教程 主要組件介紹 核心功能:Hawk工程Hawk任務(wù)市場(chǎng)數(shù)據(jù)表和數(shù)據(jù)...
    desert2017閱讀 1,404評(píng)論 0 0
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML標(biāo)準(zhǔn)。 注意:講述HT...
    kismetajun閱讀 28,824評(píng)論 1 45
  • 自己沒有經(jīng)歷過的事,再痛苦也總是感覺風(fēng)輕云淡,只有親身經(jīng)歷了才明白刻骨銘心的感覺。
    曲晉嘉措閱讀 219評(píng)論 0 0

友情鏈接更多精彩內(nèi)容