All Downloads are FREE. Search and download functionalities are using the official Maven repository.

resh.open-starter-crawler.1.0.2.source-code.README.md Maven / Gradle / Ivy

# 使用方法

v1.0.0 

采用固定流程进行操作:下载-> 解析-> 持久化

```java
@Slf4j
public class DefaultSpiderExecutor implements SpiderExecutor{

    private final TaskProcessor taskProcessor;
    private final SpiderSuccessHandler spiderSuccessHandler;
    private final SpiderFailureHandler spiderFailureHandler;
    private final SpiderDownload spiderDownload;

    public DefaultSpiderExecutor(TaskProcessor taskProcessor, SpiderSuccessHandler spiderSuccessHandler, SpiderFailureHandler spiderFailureHandler, SpiderDownload spiderDownload) {
        this.taskProcessor = taskProcessor;
        this.spiderSuccessHandler = spiderSuccessHandler;
        this.spiderFailureHandler = spiderFailureHandler;
        this.spiderDownload = spiderDownload;
    }

    @Override
    public void execute(List requests, SpiderParser spiderParser, Pipeline pipeline) {
        taskProcessor.execute(requests, task -> {
            SpiderRequest request = (SpiderRequest) task;
            try {
                // 1.download
                SpiderResponse response = spiderDownload.download(request);
                // 2.parser
                spiderParser.process(request, response);
                // 3.pipeline
                pipeline.process(request, response);
                onSuccess(request, response);
            } catch (SpiderException e) {
                onError(request, e);
            }
        });
    }

    protected void onSuccess(SpiderRequest request, SpiderResponse response) {
        spiderSuccessHandler.onSuccess(request, response);
    }

    private void onError(SpiderRequest request, SpiderException e) {
        spiderFailureHandler.onError(request, e);
    }
}
```

v1.0.1

采用固定的流程进行操作,此法存在弊端

虽然爬虫基本的操作有: 下载-> 解析-> 持久化,但是这三个操作又不是每个都是必须的,

例如可以简化为: 下载-> 持久化,中间简化了解析这一操作,

又例如别人想加一个操作流程: 下载-> 解析-> 计算-> 持久化

因此,我们使用类似流水线的处理方式,每条流水线中各个处理环节的顺序可以是不同的,数量也可以是不同的

系统默认的流水线是:下载-> 解析-> 格式化-> 值处理-> 持久化

# 注意事项

注意点

1. jsonPath 不可以与其他解析方法混用

2. 默认解析中如果所有字段都勾选了循环将进行转置,否则将不会转置

3. id 生成规则:如果指定了 id 字段,则指定的 id 字段将会被当作主键,如果没有指定 id 字段而是在某些字段上勾选了主键
   则将会拼接这些字段的值进行散列生成一个 8 位的唯一字符串当作主键,如果以上都没做,将使用第一个字段进行散列生成唯一id当作主键




© 2015 - 2024 Weber Informatics LLC | Privacy Policy