在筆記(2)中我們已經安裝好了eclipse的m2e插件,以maven為建構工具的webmagic源碼就可以導入到eclipse中了。
1.導入源碼。
步驟如下:
打開eclipse file>import。在新彈出的導入項目對話框中會出現maven選項。如圖
選擇next一路下去,最終找到你的源碼所在路徑,将共計5将解壓後的webmagic檔案夾導入。
導入後eclipse下檔案樹如圖:
在下圖所示目錄下有示範Demo,可以驗證是否導入成功。
該目錄下有幾個是我自己寫的Demo,如果是剛導入的,可以試運作GithubRePageProcessor.java
若運作後出現以下資訊,則控制台說明導入成功。
至此我們的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就可以看到爬取結果了。