大學畢業一年收穫還是滿滿的!手動滑稽 今天呢,來記錄一個爬蟲項目,用的web-magic實現,不說Java和Python那個更強,只看那個代價更小,與現在我而言自然是Java嘍!同時呢magic也是參考了Scrapy框架的。 先把git地址掏出來:https://gitee.com/xxxx/mag ...
大學畢業一年收穫還是滿滿的!手動滑稽
今天呢,來記錄一個爬蟲項目,用的web-magic實現,不說Java和Python那個更強,只看那個代價更小,與現在我而言自然是Java嘍!同時呢magic也是參考了Scrapy框架的。
先把git地址掏出來:https://gitee.com/xxxx/magicFetch.git(留言給地址)
言歸正傳,先說爬蟲需要什麼:
1、明確要做的事情:爬蟲,爬哪個網站。
2、從哪裡開始:爬蟲的入口(啟停配)Spider
3、接下來便是如何進行爬取和爬取結果的處理。
詳細:
如何啟動,如何配置,如何停止:
Spider.create(new Getxgluo()) .thread(10) //線程,magic是支持多線程的 .addUrl(t) //t:要爬取的網站URL .addPipeline(new MyPipeline()) //添加一個對爬取結果的處理操作類--輸出到console .addPipeline(new MyFilePipeline()) //再添加一個對爬取結果的處理操作類--輸出到文件 .run(); //爬蟲誕生,去吧皮卡丘,把我想要的拿回來.
靚仔,你沒猜錯,create方法是靜態的,所以可以用類名直接調用,run方法就是入口,該方法執行的時候爬蟲就啟動了。
這些是Spider最常用的配置了,至於騷操作作者就……,大家可以問問度娘,或者直接從 https://github.com/code4craft/webmagic.git獲取項目,直接分析代碼(如果覺著作者陋,歡迎吐槽)。
啟動了,基本配置有了,我們該設計自己的邏輯了,這個時候我們就要找自己想要爬取的內容在網頁的什麼位置。
找到網頁查看源代碼找到需要爬取的內容的標簽如:
這裡我們有id屬性,那麼我們知道在一個網頁中的id屬性是唯一的,因此我們可以藉助這個屬性,進行匹配
String xpathFB = "[@id=content_left]/div[2]/h3/text()";
我們利用html提供的xpath便可以根據上面提供的網頁中的位置,找到h3標簽中的內容。
現在位置找到了,要開始抓數據了,我們上面說到Spider.run的時候爬蟲已經放出去了,剛剛我們有指定了爬蟲的目標,現在要開始採蜜了。
請你回頭看看我,Spider.create(new Getxgluo())這裡我們創建了一個對象作為參數,但這個類可是作者自己寫的(當然你也可以),但是這個類可是需要實現PageProcess藉口的,而且要重寫process方法,而這個方法就是我們採蜜動作的設計。
在這裡我們需要對爬的網址進行正則匹配,不然地址都錯了,那還玩個球啊。地址正確就用到網頁中的位置xpathFB了。
html.xpath(xpathFB).toString();
通過Xpath我們就能獲取到了h3中的內容存到字元串中了,那豈不是可以為所欲為了。
哈哈,只剩一步了,對獲取內容的保存或者輸出。
這個時候拿出最後一把寶劍:Pipeline 來進行後續的操作,比如用於輸出到console中的consoPipeline類和FilePipeline類,當然我們也可以自己重寫Pipeline來創建自己的邏輯。
如果我們用了Pipeline及其子類,我們還需要new嗎?記住不需要,不需要,不需要,這裡用的回調函數,你需要在實現Pipeline的時候重寫process方法,你寫的邏輯就能被自動調用(真香)。
好了,現在我們三個步驟都完成了。愉快的試一下吧