View Javadoc
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   * @author code4crafer@gmail.com
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  }