1 package us.codecraft.webmagic.samples.pipeline;
2
3 import org.slf4j.Logger;
4 import org.slf4j.LoggerFactory;
5 import us.codecraft.webmagic.ResultItems;
6 import us.codecraft.webmagic.Task;
7 import us.codecraft.webmagic.pipeline.Pipeline;
8 import us.codecraft.webmagic.utils.FilePersistentBase;
9
10 import java.io.*;
11 import java.util.Map;
12
13
14
15
16 public class OneFilePipeline extends FilePersistentBase implements Pipeline {
17
18 private Logger logger = LoggerFactory.getLogger(getClass());
19
20 private PrintWriter printWriter;
21
22 public OneFilePipeline() throws FileNotFoundException, UnsupportedEncodingException {
23 this("/data/webmagic/");
24 }
25
26 public OneFilePipeline(String path) throws FileNotFoundException, UnsupportedEncodingException {
27 setPath(path);
28 printWriter = new PrintWriter(new OutputStreamWriter(new FileOutputStream(getFile(path)), "UTF-8"));
29 }
30
31 @Override
32 public synchronized void process(ResultItems resultItems, Task task) {
33 printWriter.println("url:\t" + resultItems.getRequest().getUrl());
34 for (Map.Entry<String, Object> entry : resultItems.getAll().entrySet()) {
35 if (entry.getValue() instanceof Iterable) {
36 Iterable value = (Iterable) entry.getValue();
37 printWriter.println(entry.getKey() + ":");
38 for (Object o : value) {
39 printWriter.println(o);
40 }
41 } else {
42 printWriter.println(entry.getKey() + ":\t" + entry.getValue());
43 }
44 }
45 printWriter.flush();
46 }
47 }