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();
}