1 package us.codecraft.webmagic.pipeline;
2
3 import com.alibaba.fastjson.JSON;
4 import org.apache.commons.codec.digest.DigestUtils;
5 import org.slf4j.Logger;
6 import org.slf4j.LoggerFactory;
7 import us.codecraft.webmagic.ResultItems;
8 import us.codecraft.webmagic.Task;
9 import us.codecraft.webmagic.utils.FilePersistentBase;
10
11 import java.io.FileWriter;
12 import java.io.IOException;
13 import java.io.PrintWriter;
14
15
16
17
18
19
20
21 public class JsonFilePipeline extends FilePersistentBase implements Pipeline {
22
23 private Logger logger = LoggerFactory.getLogger(getClass());
24
25
26
27
28 public JsonFilePipeline() {
29 setPath("/data/webmagic");
30 }
31
32 public JsonFilePipeline(String path) {
33 setPath(path);
34 }
35
36 @Override
37 public void process(ResultItems resultItems, Task task) {
38 String path = this.path + PATH_SEPERATOR + task.getUUID() + PATH_SEPERATOR;
39 try {
40 PrintWriter printWriter = new PrintWriter(new FileWriter(getFile(path + DigestUtils.md5Hex(resultItems.getRequest().getUrl()) + ".json")));
41 printWriter.write(JSON.toJSONString(resultItems.getAll()));
42 printWriter.close();
43 } catch (IOException e) {
44 logger.warn("write file error", e);
45 }
46 }
47 }