webMagic爬蟲抓取某個部落格全部文章名稱
阿新 • • 發佈:2019-02-20
demo下載地址:點選開啟連結
主要類:
package testMagic; import java.util.List; import javax.management.JMException; import us.codecraft.webmagic.Page; import us.codecraft.webmagic.Site; import us.codecraft.webmagic.Spider; import us.codecraft.webmagic.monitor.SpiderMonitor; import us.codecraft.webmagic.pipeline.ConsolePipeline; import us.codecraft.webmagic.processor.PageProcessor; /** * PageProcessor是webmagic-core的一部分,定製一個PageProcessor即可實現自己的爬蟲邏輯。 * 以下是抓取csdn部落格的一段程式碼 */ public class OschinaBlogPageProcesser implements PageProcessor { private Site site = Site.me().setSleepTime(1); public Site getSite() { return site; } int temp=1; //process(過程) public void process(Page page) { //通過page.putField()來儲存抽取結果 //page.getHtml().xpath()則是按照某個規則對結果進行抽取,這裡抽取支援鏈式呼叫 List<String> pages=page.getHtml().xpath("[@class='pagelist']").links().all(); if (pages.size()>5) { pages.remove(pages.size()-1); } page.addTargetRequests(pages);//用於獲取所有滿足"(http://blog\\.csdn\\.net/u012012240/article/month/2016/08/\\d+)"這個正則表示式的連結 //區分是列表頁面還是資訊頁面 if (page.getUrl().regex("article/list").match()) { List<String> links = page.getHtml().xpath("[@class='link_title']").links().regex("http://blog\\.csdn\\.net/chenyufeng1991/article/details/\\d+").all(); //通過page.addTargetRequests()方法來增加要抓取的URL page.addTargetRequests(links); }else { System.out.println("記錄數:"+temp++); page.putField("title", page.getHtml().xpath("//[@class='link_title']/a/text()").toString()); } } //執行這個main方法,即可在控制檯看到抓取結果。webmagic預設有3秒抓取間隔,請耐心等待。 public static void main(String[] args) { //Spider是爬蟲的入口類,addurl為入口url Spider oschinaSpider = Spider.create(new OschinaBlogPageProcesser()).addUrl("http://blog.csdn.net/CHENYUFENG1991/article/list/1") //Pipeline是結果輸出和持久化的介面,這裡ConsolePipeline表示結果輸出到控制檯 .addPipeline(new ConsolePipeline()); try { //新增到JMT監控中 SpiderMonitor.instance().register(oschinaSpider); //設定執行緒數 //oschinaSpider.thread(5); oschinaSpider.run(); } catch (JMException e) { e.printStackTrace(); } } }