You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
1.1 KiB
40 lines
1.1 KiB
package strategy;
|
|
|
|
import java.util.List;
|
|
import java.util.ArrayList;
|
|
|
|
public class StrategyFactory {
|
|
private final List<CrawlerStrategy> STRATEGIES = new ArrayList<>();
|
|
|
|
public StrategyFactory() {
|
|
STRATEGIES.add(new CNKIStrategy());
|
|
STRATEGIES.add(new IEEEStrategy());
|
|
STRATEGIES.add(new ACMDigitalLibraryStrategy());
|
|
STRATEGIES.add(new SpringerLinkStrategy());
|
|
STRATEGIES.add(new ScienceDirectStrategy());
|
|
STRATEGIES.add(new ArXivStrategy());
|
|
STRATEGIES.add(new SemanticScholarStrategy());
|
|
}
|
|
|
|
/**
|
|
* 根据URL创建对应的爬虫策略
|
|
* @param url 要创建策略的URL
|
|
* @return 对应的爬虫策略,如果URL不支持任何策略则返回null
|
|
*/
|
|
public CrawlerStrategy createCrawlerByUrl(String url) {
|
|
for (CrawlerStrategy strategy : STRATEGIES) {
|
|
if (strategy.supportsUrl(url)) {
|
|
return strategy;
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
|
public int getPlatformCount() {
|
|
return STRATEGIES.size();
|
|
}
|
|
|
|
public List<CrawlerStrategy> getAllStrategies() {
|
|
return STRATEGIES;
|
|
}
|
|
}
|