package com.geccocrawler.gecco.dynamic; import java.util.List; import javassist.CtClass; import javassist.bytecode.ConstPool; /** * 动态生成SpiderBean * * @author huchengyi * */ public interface DynamicBean { /** * 构造一个SpiderBean * * @param matchUrl 匹配url * @param pipelines 管道过滤器 * @return SpiderBean */ public JavassistDynamicBean gecco(String[] matchUrl, String... pipelines); public JavassistDynamicBean gecco(String matchUrl, String... pipelines); /** * 构造一个SpiderBean * * @param matchUrl 匹配url * @param downloader 下载器 * @param timeout 超时时间 * @param pipelines 管道过滤器 * @return SpiderBean */ public JavassistDynamicBean gecco(String[] matchUrl, String downloader, int timeout, String... pipelines); public JavassistDynamicBean gecco(String matchUrl, String downloader, int timeout, String... pipelines); /** * 获取一个已有字段 * * @param fieldName 已有字段名称 * @return 字段 */ public DynamicField existField(String fieldName); /** * 由于有歧义,已经被existField代替 * * @param fieldName 字段名称 * @return DynamicField */ @Deprecated public DynamicField field(String fieldName); /** * 新增一个字段,如果已经存在返回当前字段 * * @param fieldName 字段名称 * @param fieldType 字段类型 * @return DynamicField */ public DynamicField field(String fieldName, CtClass fieldType); public DynamicField field(String fieldName, Class<?> fieldClass); /** * 删除一个属性 * * @param fieldName 字段名 * @return DynamicBean */ public DynamicBean removeField(String fieldName); /** * string类型字段 * * @param fieldName 字段名 * @return 字段 */ public DynamicField stringField(String fieldName); /** * int类型字段 * * @param fieldName 字段名 * @return 字段 */ public DynamicField intField(String fieldName); /** * long类型字段 * * @param fieldName 字段名 * @return 字段 */ public DynamicField longField(String fieldName); /** * float类型字段 * * @param fieldName 字段名 * @return 字段 */ public DynamicField floatField(String fieldName); /** * double类型字段 * * @param fieldName 字段名 * @return 字段 */ public DynamicField doubleField(String fieldName); /** * HttpRequest类型字段 * * @param fieldName 字段名 * @return 字段 */ public DynamicField requestField(String fieldName); /** * List类型的字段 * * @param fieldName 字段名 * @param memberClass list的成员类型 * @return 字段 */ public DynamicField listField(String fieldName, Class<?> memberClass); /** * 将加载的bean注册到爬虫引擎中。 * 主要应用在先定义Bean后期的爬虫引擎的情况。 * * @return spiderBeanClass */ public Class<?> register(); /** * 加载bean到classloader中 * * @return spiderBeanClass */ public Class<?> loadClass(); /** * 卸载bean */ public void unloadClass(); /** * Constant pool table. * * @return ConstPool */ public ConstPool getConstPool(); }