fix Class.assinable bug
parent
65518f7672
commit
69245e8c03
|
@ -39,7 +39,7 @@ class PageModelExtractor {
|
|||
this.clazz = clazz;
|
||||
initTargetUrlPatterns();
|
||||
fieldExtractors = new ArrayList<FieldExtractor>();
|
||||
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();
|
||||
|
|
|
@ -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 <br>
|
||||
*/
|
||||
@TargetUrl("http://my.oschina.net/flashsword/blog/*")
|
||||
public class OschinaBlog {
|
||||
public class OschinaBlog implements AfterExtractor<OschinaBlog>{
|
||||
|
||||
@ExtractBy("//title")
|
||||
private String title;
|
||||
|
@ -19,4 +21,7 @@ public class OschinaBlog {
|
|||
@ExtractBy(value = "//div[@class='BlogTags']/a/text()", multi = true)
|
||||
private List<String> tags;
|
||||
|
||||
@Override
|
||||
public void afterProcess(Page page, OschinaBlog oschinaBlog) {
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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 <br>
|
||||
* @date: 13-8-1 <br>
|
||||
|
@ -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();
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue