diff --git a/webmagic-core/src/main/java/us/codecraft/webmagic/annotation/ExtractBy.java b/webmagic-core/src/main/java/us/codecraft/webmagic/annotation/ExtractBy.java index 4c791fd..2d08417 100644 --- a/webmagic-core/src/main/java/us/codecraft/webmagic/annotation/ExtractBy.java +++ b/webmagic-core/src/main/java/us/codecraft/webmagic/annotation/ExtractBy.java @@ -13,6 +13,8 @@ import java.lang.annotation.Target; @Target({ElementType.FIELD}) public @interface ExtractBy { + + //TODO: add list support String value(); public enum Type {XPath, Regex, Css}; diff --git a/webmagic-core/src/main/java/us/codecraft/webmagic/annotation/PageModelExtractor.java b/webmagic-core/src/main/java/us/codecraft/webmagic/annotation/PageModelExtractor.java index 41f635c..e610e10 100644 --- a/webmagic-core/src/main/java/us/codecraft/webmagic/annotation/PageModelExtractor.java +++ b/webmagic-core/src/main/java/us/codecraft/webmagic/annotation/PageModelExtractor.java @@ -42,6 +42,9 @@ class PageModelExtractor { fieldExtractors = new ArrayList(); for (Field field : clazz.getDeclaredFields()) { field.setAccessible(true); + if (!field.getType().isAssignableFrom(String.class)){ + throw new IllegalStateException("Field "+field.getName()+" must be string"); + } ExtractBy extractBy = field.getAnnotation(ExtractBy.class); if (extractBy != null) { String value = extractBy.value(); diff --git a/webmagic-samples/src/main/java/us/codecraft/webmagic/annotation/samples/IteyeBlog.java b/webmagic-samples/src/main/java/us/codecraft/webmagic/annotation/samples/IteyeBlog.java index 09a1d5b..48e4129 100644 --- a/webmagic-samples/src/main/java/us/codecraft/webmagic/annotation/samples/IteyeBlog.java +++ b/webmagic-samples/src/main/java/us/codecraft/webmagic/annotation/samples/IteyeBlog.java @@ -14,7 +14,7 @@ import us.codecraft.webmagic.annotation.TargetUrl; public class IteyeBlog implements Blog{ @ExtractBy("//title") - private String title; + private int title; @ExtractBy(value = "div#blog_content",type = ExtractBy.Type.Css) private String content; @@ -32,7 +32,7 @@ public class IteyeBlog implements Blog{ } public String getTitle() { - return title; + return null; } public String getContent() {