初學webMagic

作爲一個只是初懂,java的一個新人來說,再剛開始瞭解爬蟲的時候,什麼http協議啊,什麼httpclient啊,都是一些十分高大上的東西,爲自己的理解簡直是埋下了一個又一個的雷坑。

而我寫這篇文章的目的便是希望可以加深一下自己的理解,希望各位大神多多指教吧!!  

什麼叫做爬蟲!

爬蟲,也叫(扒蟲),我的理解就是可以再萬維網上爬行,並且可以讀取數據的程序。就叫做爬蟲。

兩個方向,一個叫做爬行,一個叫做扒取。 只要實現了這兩個部分,其他的迎刃而解。

爬蟲的分類!

因爲,webmagic是中國人所寫的,而中文又有很強大的表達闡述的能力,所以不像其他框架一樣,人人都有不一樣的理解。

第一種,叫做批量型爬蟲,簡單說就是,我對爬取範圍作出大量的限制,之後,直接一次性爬取,最大的特徵就是受限,可能一點小小改動,就可能導致這個爬蟲,爬取到的數據完全不一樣了!

第二種叫做,增量型爬蟲,簡單說,就是可以想微生物繁殖一樣無線增值,無線的進行繁殖,知道抓取完所有的數據(或者我放不下了),適用於大型的搜索引擎。

第三種叫做,垂直型爬蟲,簡單說就是一個細緻化的增量型爬蟲,我對我扒取的數據的內容進行了,限定,篩選。就叫做增量型爬蟲。

而我學習的webmagic便是一個垂直型爬蟲。

webmagic

webmagic一共有7個jar包,分別是兩個核心,四個附屬,一個正在開發的包。

他們分別是webmagic-core,webmagic-extension,webmagic-samples,webmagic-scripts,webmagic-selenium,webmagic-saxion,webmagic-avalon!,依次分別是核心,附屬,跟開發的包!  至於說最後一個包有沒有開發完,就不太清楚了!

一個完整的爬蟲程序分爲三部分,數據讀取,數據管理,數據存放!

而webmagic便是做的數據讀取的部分!

webmagic共有4大部分,分別是pageprocesser,pieline,Scheduler,Downloader,分別應對着處理,持久,管理,下載。四大部分。

第一個,是處理,也就是說,我們需要開始拿去數據的時候,我們在這個地方作出操作,這個是終點站!

第二個,是持久,一般情況下,我們需要拿去的都是大量的數據,而這些數據都是分佈在不同的網頁中的,所以我們是需要將這些個頁面一個個爬取出來的,而爬取出來又不能說直接使用,只能說是一步步的,一點一點的用。 所以我們需要將他持久化!

第三個,叫做管理,因爲爬取數據時,可能會一瞬間獲取大量的需要扒取的網址,但是呢。卻只能一點一點的來往出扒,所以這個管理的目的就是說,實現對網址的監管,看看哪部分爬取了,那部分沒有爬取!

第四個,叫做下載,因爲我們通常爬取的不可能只有一下文本啊,什麼的。 還有可能是爬取一些文件,圖片,所以這個部分就是說,輔助我們的爬蟲,來完成一些下載的任務!

建立程序

webmagic可以再maven託管的情況下,進行建立程序,當然了也可以不託管的情況下,建立程序(只不過,我沒有成功過!)。

下面是我寫的maven託管情況下的託管狀態的代碼!


也就不做具體的描述了,具體裏面怎麼書寫,那就是maven的事情了!

下面貼上,我的書寫的第一份爬蟲!


下面是對自己想要獲取的東西加以限定!

package com.oracle.Hello;


import us.codecraft.webmagic.Page;
import us.codecraft.webmagic.Site;
import us.codecraft.webmagic.Spider;
import us.codecraft.webmagic.processor.PageProcessor;


public class Test implements PageProcessor{
//這個的意思就是編碼,間隔時間,重試次數
    private static Site site=Site.me().setRetryTimes(1000).setSleepTime(1000);
public Site getSite() {
return site;
}
    /**
     * 這個裏面就是對你想要爬取的頁面裏面的具體內容加以限制的地方
     */
public void process(Page page) {
      //根據標籤查找自己想要的數據
      //爬取的是這個網頁中的logo圖片的地址
              String path=page.getHtml().xpath("//*[@class='main-content']/p").css("img", "src").get();
              System.out.println(path);
              
             
}
public static void main(String[] args) {
//這個裏面填寫你所想要爬取的頁面
//而我爬取的就是webmagic的官網
Spider.create(new Test()).addUrl("http://webmagic.io/").thread(5).run();//Strat()也可以
}


}

下面就是我獲得的值

/images/logo.jpeg
get page: http://webmagic.io/

下面是實際他自己的值

/images/logo.jpeg






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章