前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Pipeline的几种输出实现

Pipeline的几种输出实现

作者头像
名字是乱打的
发布2022-05-13 10:16:15
4280
发布2022-05-13 10:16:15
举报
文章被收录于专栏:软件工程

1 ConsolePipeline 控制台输出

代码语言:javascript
复制
/*
 * 爬取类
 */
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文件保存
代码语言:javascript
复制
     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文件
代码语言:javascript
复制
//以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

代码语言:javascript
复制
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方法

代码语言:javascript
复制
     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();
    }
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-05-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 ConsolePipeline 控制台输出
    • 2 FilePipeline文件保存
      • 3JsonFilePipeline 每条数据以JsouFile形式保存jsou文件
        • 4 定制自己的Pipeline,控制保存的信息
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档