- GitHub文檔鏡像
- 歡迎使用Hawk
- 快速教程
- 主要組件介紹
- 核心功能:
- [模塊和算子]
- 常見(jiàn)問(wèn)題
- 更新日志作者和捐贈(zèng)列表
- 專題:
- 案例:
- 發(fā)布文章:
- 故事:
快速教程
本文給不想看詳細(xì)教程的同學(xué)使用娱节,仔細(xì)閱讀,可以讓你戰(zhàn)斗力爆棚:
1.界面和交互
1.1.主工作區(qū)
啟動(dòng)后屎媳,在歡迎頁(yè)面有三個(gè)tab頁(yè): 新建任務(wù)轴或,任務(wù)市場(chǎng)和參數(shù)設(shè)置。歡迎頁(yè)面非常重要互墓,能夠新建任務(wù)桑嘶,或者瀏覽相關(guān)文檔和幫助。
- 新建任務(wù):雙擊圖標(biāo)即可新建和加載已有任務(wù)
- 點(diǎn)擊tab菜單【文件】可加載册着,保存任務(wù)拴孤,任務(wù)為xml文件。
- 下側(cè)是【數(shù)據(jù)管理】甲捏,空白處右鍵可新建連接演熟,連接名上右鍵可配置,支持本地文件(xls,txt,json)摊鸡,數(shù)據(jù)庫(kù)(mongodb,sqlite)绽媒。數(shù)據(jù)庫(kù)需要連接后才能使用蚕冬,可勾選【自動(dòng)連接】.
1.2.狀態(tài)區(qū)
在Hawk主界面右側(cè)是當(dāng)前的狀態(tài)免猾,包括三個(gè)區(qū)域:
- 已加載任務(wù)
- 數(shù)據(jù)管理:可顯示生成的或從文件中導(dǎo)出的表
- 工作線程視圖:正在執(zhí)行的任務(wù)都會(huì)顯示在這里
- 軟件右下角對(duì)應(yīng)的是【系統(tǒng)狀態(tài)視圖】,左右側(cè)分別是已加載的任務(wù)和數(shù)據(jù)集囤热。
左鍵查看猎提,右鍵配置,空白處右鍵批量管理。 下面的圖標(biāo)可用于刪除锨苏,拷貝疙教,保存等功能,把任務(wù)或數(shù)據(jù)集拖到圖標(biāo)上試試伞租! - 【網(wǎng)頁(yè)采集器】用于配置單個(gè)網(wǎng)頁(yè)的抓取規(guī)則贞谓,【數(shù)據(jù)清洗】用于打造清洗流程,并調(diào)用前者葵诈。 復(fù)雜任務(wù)會(huì)創(chuàng)建多個(gè)清洗并互相調(diào)用裸弦。
2.網(wǎng)頁(yè)采集器
網(wǎng)頁(yè)采集器 模擬了瀏覽器的設(shè)計(jì),填入網(wǎng)址作喘,點(diǎn)擊刷新理疙,即可獲取對(duì)應(yīng)地址的html源碼。
認(rèn)識(shí)到網(wǎng)頁(yè)是一棵樹(shù)(DOM)后泞坦,每個(gè)XPath對(duì)應(yīng)一個(gè)屬性窖贤,即可從網(wǎng)頁(yè)上獲取單個(gè)或多個(gè)文檔。網(wǎng)頁(yè)采集器的目的就是更快地通過(guò)手工或自動(dòng)配置找到最優(yōu)XPath贰锁。
2.1.工作模式
使用采集器赃梧,首先要按照抓取的目標(biāo),選擇合適的工作模式:
- 多文檔: 會(huì)輸出多份文檔豌熄,通常在網(wǎng)頁(yè)的列表頁(yè)中使用槽奕, 如二手房的列表頁(yè)面,新聞的列表頁(yè)
- 單文檔: 輸出單份文檔房轿,一般在網(wǎng)頁(yè)的詳情頁(yè)中使用粤攒,如京東的訂單頁(yè),新聞
- 不進(jìn)行轉(zhuǎn)換: 直接輸出網(wǎng)頁(yè)源代碼囱持,放置于Content列中
注意:
- 一個(gè)復(fù)雜的頁(yè)面可能包含多個(gè)列表和詳情夯接,因此模式的選擇主要取決于要抓取的數(shù)據(jù)是什么
- 當(dāng)在 多文檔或 單文檔模式,且屬性數(shù)量為0時(shí)纷妆,也和 不進(jìn)行轉(zhuǎn)換行為一致
2.2.基本操作
- 左側(cè)的區(qū)域盔几,顯示了html源碼和瀏覽器視圖(但不能執(zhí)行js),可通過(guò)上側(cè)tab頁(yè)切換掩幢。
- 右側(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)頁(yè)的目標(biāo)內(nèi)容岭佳。
[圖片上傳失敗...(image-39f458-1559958071956)]
可手工填入搜索字符
,即可在網(wǎng)頁(yè)上快速定位元素和XPath萧锉,可在多個(gè)結(jié)果間快速切換珊随,找到所需數(shù)據(jù)后,輸入屬性名稱后手工添加屬性柿隙。
2.3.高級(jí)功能
- 點(diǎn)擊【Http請(qǐng)求詳情】玫恳,可修改網(wǎng)頁(yè)編碼,代理优俘,cookie和請(qǐng)求方式等京办,網(wǎng)頁(yè)出現(xiàn)亂碼可用
- 若希望自動(dòng)登錄,或獲取動(dòng)態(tài)頁(yè)面(ajax)的真實(shí)地址帆焕,填入搜索字符惭婿,點(diǎn)擊【自動(dòng)嗅探】,在彈出的瀏覽器中翻到對(duì)應(yīng)的關(guān)鍵字叶雹,Hawk就能自動(dòng)捕捉真實(shí)請(qǐng)求
- 超級(jí)模式下财饥,Hawk會(huì)將源碼中的js,html,json都轉(zhuǎn)成html,從而使用手氣不錯(cuò), 更通用但性能較差
- 填寫【共享源】折晦,本采集器同步共享源的【Http請(qǐng)求詳情】钥星,避免重復(fù)設(shè)置cookie代理等。
- 詳情頁(yè)(單文檔模式)也可以手氣不錯(cuò)(Hawk3新功能)满着,搜索所需字段谦炒,不需要添加到屬性列表,點(diǎn)擊手氣不錯(cuò)試試风喇!
- 網(wǎng)頁(yè)地址也可以是本地文件路徑宁改,如D:\target.html, 用其他方法保存網(wǎng)頁(yè)后,再通過(guò)Hawk分析網(wǎng)頁(yè)內(nèi)容
[圖片上傳失敗...(image-2f8a47-1559958071956)]
3.數(shù)據(jù)清洗
數(shù)據(jù)清洗可以通過(guò)組合多個(gè)不同的子模塊魂莫,生成多樣的功能还蹲,通過(guò)拖拽構(gòu)造出一個(gè)工作流,它能夠產(chǎn)生一個(gè)有限或無(wú)限的文檔序列耙考。比如下面:
3.1.基本操作
- 左側(cè)是所有模塊列表谜喊,分為生成,轉(zhuǎn)換倦始,過(guò)濾和執(zhí)行四種類型斗遏,可通過(guò)名稱和拼音首字母快速檢索。順序組合可構(gòu)成復(fù)雜任務(wù)楣号。
- 右側(cè)是數(shù)據(jù)預(yù)覽最易,可將左側(cè)選中的模塊拖入到右側(cè)對(duì)應(yīng)列上怒坯。 雙擊每個(gè)列上面的模塊對(duì)其配置炫狱。將鼠標(biāo)驮謇粒靠字段上可查看使用介紹
- 預(yù)覽時(shí),處理是串行的视译,數(shù)據(jù)不會(huì)被寫入嬉荆,有緩存,調(diào)試所見(jiàn)即所得酷含。 只有在執(zhí)行模式下才會(huì)并行快速執(zhí)行鄙早。
- 執(zhí)行器可看做帶有副作用(如寫入文件)的轉(zhuǎn)換器,只有在執(zhí)行時(shí)才會(huì)運(yùn)行
- 生成器通常位于任務(wù)開(kāi)頭椅亚,可從文本限番,文件,數(shù)據(jù)庫(kù)讀取數(shù)據(jù)呀舔。生成器也能位于流的中間弥虐,通過(guò)多種模式與已有數(shù)據(jù)流組合
- 下方菜單欄可點(diǎn)擊刷新,前后單步媚赖,可通過(guò)采樣量來(lái)修改預(yù)覽的數(shù)據(jù)量霜瘪。配置完畢無(wú)誤后,左側(cè)面板點(diǎn)擊執(zhí)行即可惧磺。
- 很多問(wèn)題來(lái)自于模塊順序不對(duì)颖对,任何步驟錯(cuò)誤,會(huì)導(dǎo)致連鎖的問(wèn)題磨隘,因此有必要使用單步調(diào)試缤底,在調(diào)試到某步時(shí),拖入的模塊會(huì)插入到所在位置番捂。
3.2.高級(jí)功能和技巧
- 輸入列一般不用配置训堆,需要時(shí)可下拉選擇,也可手工輸入文本白嘁。列名不要為純數(shù)字坑鱼,否則無(wú)法正常顯示。
- 關(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)類型語(yǔ)言,輸入的數(shù)據(jù)可能是字符串或數(shù)字吸奴,因此必要時(shí)需要做類型轉(zhuǎn)換允扇;通過(guò)填寫庫(kù)路徑缠局,可讓轉(zhuǎn)換器調(diào)用第三方模塊。
- 可在任務(wù)的各個(gè)位置拖入多個(gè)執(zhí)行器(如【寫入數(shù)據(jù)表】)考润,它保存的是當(dāng)前狀態(tài)的數(shù)據(jù)狭园。
- 子任務(wù):任務(wù)可互相調(diào)用,功能非常強(qiáng)大糊治,可用于處理多次跳轉(zhuǎn)唱矛,詳情頁(yè)還包含列表的問(wè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.一些忠告
- Hawk除了做爬蟲(chóng),還能做數(shù)據(jù)清洗萝映,甚至批量執(zhí)行命令吴叶,需要你來(lái)挖掘。
- Hawk對(duì)代理的支持不夠(免費(fèi)的就知足吧)序臂,避免過(guò)度抓取導(dǎo)致屏蔽蚌卤。
- 記得經(jīng)常保存任務(wù),盡量將數(shù)據(jù)寫入到數(shù)據(jù)庫(kù)而非表里奥秆,否則程序可能崩潰難以挽回逊彭。
5.如何提問(wèn)
Hawk是個(gè)免費(fèi)的系統(tǒng),因此沒(méi)有客服mm(誰(shuí)請(qǐng)得起构订,設(shè)計(jì)者也不夠帥)侮叮,因此好的問(wèn)題能極大地提升解決問(wèn)題的速度。請(qǐng)按照如下方式描述你的問(wèn)題:
- 抓取的網(wǎng)站地址悼瘾,要抓取什么內(nèi)容囊榜,在頁(yè)面的什么位置审胸,是什么范圍。
- 如果能提供你的工程文件卸勺,可在附錄中給出砂沛,這能最大程度解決問(wèn)題。
- 如果是界面出現(xiàn)異常孔庭,請(qǐng)?zhí)峁┰谑裁喘h(huán)境下尺上,點(diǎn)擊什么按鈕材蛛,報(bào)出什么異常圆到,并發(fā)送所執(zhí)行文件夾的log.dat日志文件作為附件。
- 操作系統(tǒng)版本卑吭,.Net Framework環(huán)境(不是必須)
請(qǐng)盡量避免如下提問(wèn)方式芽淡,這樣的提問(wèn)沒(méi)有任何意義,作者也無(wú)法解決你的問(wèn)題:
- XXX網(wǎng)站怎么爬
- XXX不會(huì)用豆赏,用不了
- XXX出問(wèn)題了
提問(wèn)按照如下優(yōu)先級(jí)進(jìn)行:
- 推薦使用Github的issue,方便其他朋友查閱已有的問(wèn)題挣菲。: https://github.com/ferventdesert/Hawk/issues
- 加入QQ群: 546750531(Hawk數(shù)據(jù)抓取交流)
- 給作者發(fā)郵件: buptzym@qq.com