天天看點

webmagic學習筆記(3)---eclipse下導入源碼及第一個小爬蟲簡單分析

在筆記(2)中我們已經安裝好了eclipse的m2e插件,以maven為建構工具的webmagic源碼就可以導入到eclipse中了。

1.導入源碼。

步驟如下:

打開eclipse file>import。在新彈出的導入項目對話框中會出現maven選項。如圖

webmagic學習筆記(3)---eclipse下導入源碼及第一個小爬蟲簡單分析

選擇next一路下去,最終找到你的源碼所在路徑,将共計5将解壓後的webmagic檔案夾導入。

導入後eclipse下檔案樹如圖:

webmagic學習筆記(3)---eclipse下導入源碼及第一個小爬蟲簡單分析

在下圖所示目錄下有示範Demo,可以驗證是否導入成功。

webmagic學習筆記(3)---eclipse下導入源碼及第一個小爬蟲簡單分析

該目錄下有幾個是我自己寫的Demo,如果是剛導入的,可以試運作GithubRePageProcessor.java

若運作後出現以下資訊,則控制台說明導入成功。

webmagic學習筆記(3)---eclipse下導入源碼及第一個小爬蟲簡單分析

至此我們的webmagic源碼已經成功導入到eclipse中去了,接下來就可以進行自定制爬蟲了。

2.第一個小爬蟲簡單分析。

package us.codecraft.webmagic.processor.example;

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

/**
 * @author [email protected] <br>
 * @since 0.3.2
 */
public class GithubRepoPageProcessor implements PageProcessor {
    //部分一  抓取網站的配置,包括編碼 抓取間隔 重試次數
    private Site site = Site.me().setRetryTimes().setSleepTime().setTimeOut();
    static String myurl="https://github.com/code4craft";
    @Override
    // process 是定制爬蟲邏輯的核心接口 在這裡編寫抽取邏輯
    public void process(Page page) {
        //部分二 定義如何抽取頁面資訊 并儲存下來

        //正規表達式
        //加入到帶抓取的隊列中去
        page.addTargetRequests(page.getHtml().links().regex("(https://github\\.com/[\\w\\-]+/[\\w\\-]+)").all());
        page.addTargetRequests(page.getHtml().links().regex("(https://github\\.com/[\\w\\-])").all());
        page.putField("author", page.getUrl().regex("https://github\\.com/(\\w+)/.*").toString());
        // 查找所有class屬性為 'public'的h1元素 并找到其他子節點的a子節點 并擷取a節點文本資訊
        // 注:XPath本來是用于XML中擷取元素的一種查詢語言,但是用于Html也是比較友善的
        page.putField("name", page.getHtml().xpath("//h1[@class='public']/strong/a/text()").toString());
        if (page.getResultItems().get("name")==null){
            //skip this page
            page.setSkip(true);
        }
        page.putField("readme", page.getHtml().xpath("//div[@id='readme']/tidyText()"));
    }

    @Override
    public Site getSite() {
        return site;
    }

    public static void main(String[] args) {
        Spider.create(new GithubRepoPageProcessor()) //建立Spider對象
        .addUrl(myurl) //添加爬取起始頁
        .thread()     //線程數目
        .run();

    }
}
           

webmagic爬蟲架構真正需要自己定制的地方隻有PageProcessor了,根據你爬去網站、爬取内容、爬取方式的不同來定制你的PageProcessor。最簡單的自定制流程就是 自定制PageProcessor–>建立Spider對象–>run就可以看到爬取結果了。

繼續閱讀