基于WebMagic爬虫定制的持久化模块(TXT)

package police;

import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Map;

import org.apache.log4j.Logger;

import us.codecraft.webmagic.ResultItems;
import us.codecraft.webmagic.Task;
import us.codecraft.webmagic.pipeline.FilePipeline;
import us.codecraft.webmagic.pipeline.Pipeline;
import us.codecraft.webmagic.utils.FilePersistentBase;

//爬取police信息,自定义MyFilePipeline函数,用于输出信息
public class MyFilePipeline extends FilePersistentBase implements Pipeline
{
	private Logger logger = Logger.getLogger(getClass());

	/**
	 * create a FilePipeline with default path"/data/webmagic/"
	 */
	public MyFilePipeline()
	{
		setPath("/data/webmagic/");
	}

	boolean cont;
	String mpath;

	public MyFilePipeline(String path, boolean con)
	{
		setPath(path);
		cont = con;
	}

	@Override
	public void process(ResultItems resultItems, Task task)
	{
		// String path = this.path + PATH_SEPERATOR + task.getUUID() +
		// PATH_SEPERATOR;
		// String path="E:/data2.txt";
		int i = 0;
		try
		{
			// PrintWriter printWriter = new PrintWriter(new
			// FileWriter(getFile(path +
			// DigestUtils.md5Hex(resultItems.getRequest().getUrl()) +
			// ".txt")));
			PrintWriter printWriter = new PrintWriter(new FileWriter(getFile(this.path), this.cont));
			// printWriter.println("url:\t" +
			// resultItems.getRequest().getUrl());
			// entrySet()的返回值也是返回一个Set集合,此集合的类型为Map.Entry
			for (Map.Entry<String, Object> entry : resultItems.getAll().entrySet())
			{
				/*
				 * if (entry.getValue() instanceof Iterable) { Iterable value =
				 * (Iterable) entry.getValue();
				 * printWriter.println(entry.getKey() + ":"); for (Object o :
				 * value) { printWriter.println(o); } } else {
				 */

				i++;
				String a = entry.getValue().toString();
				if (i == 4)
				{
					int b = a.indexOf("\n");
					if (b != -1)
					{
						a=a.replaceAll("\n", "");
						a=a.replaceAll("\r", "");
					}
					
				}
				printWriter.println(a);

				/*
				 * String[] keys = new String[]{"Title","address","lat","lon"};
				 * for (String key:keys){
				 * printWriter.println(resultItems.get(key)); }
				 */// 自己手动获取key
					// }
			}
			printWriter.close();
		}
		catch (IOException e)
		{
			logger.warn("write file error", e);
		}
	}
}


你可能感兴趣的:(java,txt,持久化,webmagic)