Pipeline的几种输出实现

1 ConsolePipeline 控制台输出

/*
 * 爬取类
 */
public class MyProcessor implements PageProcessor {
    public void process(Page page) {
        //page.addTargetRequests( page.getHtml().links().all() );//将当前页 面里的所有链接都添加到目标页面中
        //
        page.addTargetRequests( page.getHtml().links().regex("https://blog.csdn.net/[ ‐z 0‐9 ‐]+/article/details/[0‐9]{8}").all() );
        //System.out.println(page.getHtml().xpath("//*[@id=\"mainBox\"]/main/div[1]/div[1]/h1/text()").toString());
        page.putField("title",page.getHtml().xpath("//*[@id=\"mainBox\"]/main/div[1]/div[1]/h1/text()").toString());
    }

    public Site getSite() {
        return Site.me().setSleepTime(100).setRetryTimes(3);    
}

    public static void main(String[] args) {
        Spider.create( new MyProcessor() )
                .addUrl("https://blog.csdn.net")
                .addPipeline(new ConsolePipeline()) 
               .run();
    }
}

2 FilePipeline文件保存

     public static void main(String[] args) {
        Spider.create( new MyProcessor() )
                .addUrl("https://blog.csdn.net")
                .addPipeline(new ConsolePipeline())
                .addPipeline(new FilePipeline("e:/data"))//以文件方式保存                 .run();
    }

3JsonFilePipeline 每条数据以JsouFile形式保存jsou文件

//以json方式保存
     public static void main(String[] args) {
        Spider.create( new MyProcessor() )
                .addUrl("https://blog.csdn.net")
                .addPipeline(new ConsolePipeline())
                .addPipeline(new FilePipeline("e:/data"))
                .addPipeline(new JsonFilePipeline("e:/json"))// 以json方式保存 
                .run();
    }

4 定制自己的Pipeline,控制保存的信息

(1)创建类MyPipeline实现接口Pipeline

import us.codecraft.webmagic.ResultItems;
import us.codecraft.webmagic.Task;
import us.codecraft.webmagic.pipeline.Pipeline;
public class MyPipeline implements Pipeline {
    public void process(ResultItems resultItems, Task task) {
        String title=resultItems.get("title");
        System.out.println("我的定制的 title:"+title);
    }
}

(2)修改main方法

     public static void main(String[] args) {
        Spider.create( new MyProcessor() )
                .addUrl("https://blog.csdn.net")
                .addPipeline(new ConsolePipeline())
                .addPipeline(new FilePipeline("e:/data"))
                .addPipeline(new JsonFilePipeline("e:/json"))                .addPipeline(new MyPipeline())//定制化输出
                .run();
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容