web-magic + Xpath Java程序員

大學畢業一年收穫仍是滿滿的!手動滑稽html

今天呢,來記錄一個爬蟲項目,用的web-magic實現,不說Java和Python那個更強,只看那個代價更小,與如今我而言天然是Java嘍!同時呢magic也是參考了Scrapy框架的。java

先把git地址掏出來:https://gitee.com/xxxx/magicFetch.git(留言給地址)git

言歸正傳,先說爬蟲須要什麼:github

  一、明確要作的事情:爬蟲,爬哪一個網站。web

  二、從哪裏開始:爬蟲的入口(啓停配)Spider多線程

  三、接下來即是如何進行爬取和爬取結果的處理。框架

詳細:ide

  如何啓動,如何配置,如何中止: 函數

 

 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方法,你寫的邏輯就能被自動調用(真香)。

  好了,如今咱們三個步驟都完成了。愉快的試一下吧

相關文章
相關標籤/搜索