diff --git a/webmagic-core/src/main/java/us/codecraft/webmagic/oo/PageModelExtractor.java b/webmagic-core/src/main/java/us/codecraft/webmagic/oo/PageModelExtractor.java index e743e06..83a4d31 100644 --- a/webmagic-core/src/main/java/us/codecraft/webmagic/oo/PageModelExtractor.java +++ b/webmagic-core/src/main/java/us/codecraft/webmagic/oo/PageModelExtractor.java @@ -39,7 +39,7 @@ class PageModelExtractor { this.clazz = clazz; initTargetUrlPatterns(); fieldExtractors = new ArrayList(); - if (clazz.isAssignableFrom(AfterExtractor.class)) { + if (AfterExtractor.class.isAssignableFrom(clazz)) { try { afterExtractor = (AfterExtractor) clazz.newInstance(); } catch (Exception e) { @@ -50,9 +50,9 @@ class PageModelExtractor { field.setAccessible(true); ExtractBy extractBy = field.getAnnotation(ExtractBy.class); if (extractBy != null) { - if (!extractBy.multi() && !field.getType().isAssignableFrom(String.class)) { + if (!extractBy.multi() && !String.class.isAssignableFrom(field.getType())) { throw new IllegalStateException("Field " + field.getName() + " must be string"); - } else if (extractBy.multi() && !field.getType().isAssignableFrom(List.class)) { + } else if (extractBy.multi() && !List.class.isAssignableFrom(field.getType())) { throw new IllegalStateException("Field " + field.getName() + " must be list"); } String value = extractBy.value(); @@ -82,9 +82,9 @@ class PageModelExtractor { } ExtractByUrl extractByUrl = field.getAnnotation(ExtractByUrl.class); if (extractByUrl != null) { - if (!extractByUrl.multi() && !field.getType().isAssignableFrom(String.class)) { + if (!extractByUrl.multi() && !String.class.isAssignableFrom(field.getType())) { throw new IllegalStateException("Field " + field.getName() + " must be string"); - } else if (extractByUrl.multi() && !field.getType().isAssignableFrom(List.class)) { + } else if (extractByUrl.multi() && !List.class.isAssignableFrom(field.getType())) { throw new IllegalStateException("Field " + field.getName() + " must be list"); } String regexPattern = extractByUrl.value(); diff --git a/webmagic-core/src/test/java/us/codecraft/webmagic/oo/OschinaBlog.java b/webmagic-core/src/test/java/us/codecraft/webmagic/oo/OschinaBlog.java index b8c7e4a..c82ef23 100644 --- a/webmagic-core/src/test/java/us/codecraft/webmagic/oo/OschinaBlog.java +++ b/webmagic-core/src/test/java/us/codecraft/webmagic/oo/OschinaBlog.java @@ -1,5 +1,7 @@ package us.codecraft.webmagic.oo; +import us.codecraft.webmagic.Page; + import java.util.List; /** @@ -8,7 +10,7 @@ import java.util.List; * Time: 下午10:18
*/ @TargetUrl("http://my.oschina.net/flashsword/blog/*") -public class OschinaBlog { +public class OschinaBlog implements AfterExtractor{ @ExtractBy("//title") private String title; @@ -19,4 +21,7 @@ public class OschinaBlog { @ExtractBy(value = "//div[@class='BlogTags']/a/text()", multi = true) private List tags; + @Override + public void afterProcess(Page page, OschinaBlog oschinaBlog) { + } } diff --git a/webmagic-core/src/test/java/us/codecraft/webmagic/oo/TestFetcher.java b/webmagic-core/src/test/java/us/codecraft/webmagic/oo/TestFetcher.java index e8e3799..f4525f0 100644 --- a/webmagic-core/src/test/java/us/codecraft/webmagic/oo/TestFetcher.java +++ b/webmagic-core/src/test/java/us/codecraft/webmagic/oo/TestFetcher.java @@ -1,8 +1,12 @@ package us.codecraft.webmagic.oo; +import org.junit.Ignore; import org.junit.Test; import us.codecraft.webmagic.Site; +import java.util.ArrayList; +import java.util.List; + /** * @author yihua.huang@dianping.com
* @date: 13-8-1
@@ -10,12 +14,15 @@ import us.codecraft.webmagic.Site; */ public class TestFetcher { -// @Ignore("takes long") + @Ignore("takes long") @Test public void test() { + System.out.println(List.class.isAssignableFrom(ArrayList.class)); OOSpider.create(Site.me().addStartUrl("http://my.oschina.net/flashsword/blog/145796"), OschinaBlog.class) .run(); } + + }