@ -6,7 +6,7 @@ import java.util.Map;
/**
* 保存抽取结果的类,由PageProcessor处理得到,传递给{@link us.codecraft.webmagic.pipeline.Pipeline}进行持久化。<br>
* @author code4crafter@gmail.com <br>
* @date: 13-7-25 <br>
* Date: 13-7-25 <br>
* Time: 下午12:20 <br>
*/
public class ResultItems {
@ -3,7 +3,7 @@ package us.codecraft.webmagic.downloader;
* 比较占用资源的服务可以实现该接口,Spider会在结束时调用destroy()释放资源。<br>
* @date: 13-7-26 <br>
* Date: 13-7-26 <br>
* Time: 下午3:10 <br>
public interface Destroyable {
@ -5,7 +5,7 @@ import java.util.List;
* @date: 13-8-3 <br>
* Date: 13-8-3 <br>
* Time: 下午5:29 <br>
public class AndSelector implements Selector {
public class OrSelector implements Selector {
@ -4,7 +4,7 @@ import java.util.Collection;
* @date: 13-8-4 <br>
* Date: 13-8-4 <br>
* Time: 下午5:18 <br>
public interface PagedModel {
@ -6,7 +6,7 @@ import us.codecraft.webmagic.Page;
* 实现这个接口即可在抽取后进行后处理。<br>
*
* Time: 上午9:42 <br>
public interface AfterExtractor {
@ -5,7 +5,7 @@ import us.codecraft.webmagic.Task;
* Time: 下午3:41 <br>
public class ConsolePageModelPipeline implements PageModelPipeline {
@ -4,7 +4,7 @@ import us.codecraft.webmagic.selector.Selector;
* @date: 13-8-1 <br>
* Date: 13-8-1 <br>
* Time: 下午9:48 <br>
class Extractor {
@ -7,7 +7,7 @@ import java.lang.reflect.Method;
class FieldExtractor extends Extractor{
@ -16,7 +16,7 @@ import java.util.regex.Pattern;
* 基于PageProcessor的扩展点。<br>
* Time: 下午8:46 <br>
class ModelPageProcessor implements PageProcessor {
@ -14,7 +14,7 @@ import java.util.concurrent.ConcurrentHashMap;
* 基于Pipeline的扩展点,用于实现注解格式的Pipeline。<br>
* 与PageModelPipeline是一对多的关系(原谅作者没有更好的名字了)。<br>
* @date: 13-8-2 <br>
* Date: 13-8-2 <br>
* Time: 上午10:47 <br>
class ModelPipeline implements Pipeline {
@ -6,7 +6,7 @@ import us.codecraft.webmagic.Spider;
* 基于Model的Spider,封装后的入口类。<br>
* Time: 上午9:51 <br>
public class OOSpider extends Spider {
@ -17,7 +17,7 @@ import java.util.regex.Pattern;
* Model主要逻辑类。将一个带注解的POJO转换为一个PageModelExtractor。<br>
* Time: 下午9:33 <br>
class PageModelExtractor {
@ -4,7 +4,7 @@ import us.codecraft.webmagic.Task;
* Time: 上午9:34 <br>
public interface PageModelPipeline<T> {
@ -8,7 +8,7 @@ import java.lang.annotation.Target;
* 定义类或者字段的抽取规则。<br>
* Time: 下午8:40 <br>
@Retention(java.lang.annotation.RetentionPolicy.RUNTIME)
* 定义类或者字段的抽取规则,只能在Extract、ExtractByRaw之后使用。<br>
@ -7,7 +7,7 @@ import java.lang.annotation.Target;
* 对于在Class级别就使用过ExtractBy的类,在字段中想抽取全部内容可使用此方法。<br>
* 定义类或者字段的抽取规则(从url中抽取,只支持正则表达式)。<br>
* 定义辅助爬取的url。<br>
* 定义某个类抽取的范围和来源,sourceRegion可以用xpath语法限定抽取区域。<br>
@ -13,7 +13,7 @@ import java.util.concurrent.ConcurrentHashMap;
* 在使用redis做分布式爬虫时,请不要使用此功能。<br>
* Time: 下午5:15 <br>
public class PagedPipeline implements Pipeline {
@ -13,7 +13,7 @@ import us.codecraft.webmagic.schedular.Scheduler;
* 使用redis管理url,构建一个分布式的爬虫。<br>
* Time: 上午7:07 <br>
public class RedisScheduler implements Scheduler {
@ -4,7 +4,7 @@ import java.util.Map;
* @author code4crafter@gmail.com
* @date Dec 14, 2012
* Date Dec 14, 2012
public class DoubleKeyMap<K1, K2, V> extends MultiKeyMapBase {
private Map<K1, Map<K2, V>> map;
@ -2,7 +2,7 @@ package us.codecraft.webmagic.utils;
import java.util.HashMap;
@ -9,7 +9,7 @@ import us.codecraft.webmagic.Task;
* Time: 上午7:51 <br>
public class RedisSchedulerTest {
@ -26,7 +26,7 @@ import java.util.Map;
* @date: 13-8-5 <br>
* Date: 13-8-5 <br>
* Time: 下午2:11 <br>
public class LucenePipeline implements Pipeline {
@ -13,7 +13,7 @@ import java.util.List;
* Time: 上午7:52 <br>
@TargetUrl("http://my.oschina.net/flashsword/blog/\\d+")
@ -14,7 +14,7 @@ import java.util.Scanner;
* @date: 13-8-7 <br>
* Date: 13-8-7 <br>
* Time: 下午9:24 <br>
public class QuickStarter {
@ -2,7 +2,7 @@ package us.codecraft.webmagic.model.samples;
* Time: 上午8:10 <br>
public interface Blog {
@ -7,7 +7,7 @@ import us.codecraft.webmagic.model.annotation.TargetUrl;
@TargetUrl("http://*.iteye.com/blog/*")
@ -16,7 +16,7 @@ import java.util.List;
* Time: 下午8:17 <br>
@TargetUrl("http://news.163.com/\\d+/\\d+/\\d+/\\w+*.html")
@ -9,7 +9,7 @@ import us.codecraft.webmagic.model.annotation.TargetUrl;
* Time: 下午8:25 <br>
@TargetUrl("http://www.oschina.net/question/\\d+_\\d+*")
@ -10,7 +10,7 @@ import java.util.List;
@ -8,7 +8,7 @@ import us.codecraft.webmagic.processor.PageProcessor;
* Time: 上午7:31 <br>
public class IteyeBlogProcessor implements PageProcessor {
@ -22,7 +22,7 @@ import java.util.Map;
* 需要下载Selenium driver支持。<br>
* Time: 下午1:37 <br>
public class SeleniumDownloader implements Downloader, Destroyable {
@ -12,7 +12,7 @@ import java.util.concurrent.atomic.AtomicInteger;
* Time: 下午1:41 <br>
class WebDriverPool {
@ -14,7 +14,7 @@ import java.util.Map;
* Time: 下午12:27 <br>
public class SeleniumTest {
* Time: 下午2:46 <br>
public class SeleniumDownloaderTest {
@ -6,7 +6,7 @@ import org.openqa.selenium.WebDriver;
* Time: 下午2:12 <br>
public class WebDriverPoolTest {
@ -11,7 +11,7 @@ import us.codecraft.webmagic.processor.PageProcessor;
* 花瓣网抽取器。<br>
* 使用Selenium做页面动态渲染。<br>
* Time: 下午4:08 <br>
public class HuabanProcessor implements PageProcessor {