快速入门

VSCrawler的使用其实不难,和普通的爬虫框架类似。如下:

依赖引入

<dependency>
    <groupId>com.virjar</groupId>
    <artifactId>vscrawler-core</artifactId>
    <version>0.0.1</version>
</dependency>

请尽量使用最新版

第1个爬虫

public class CrawlerDemo {
    public static void main(String[] args) {

        // 启动爬虫
        VSCrawler vsCrawler = VSCrawlerBuilder.create()// 创建一个构造器
                .build();
        //vsCrawler 强制实现了断点续爬的功能,如果你是做测试,建议在开启爬虫前清空历史任务,否则你的种子可能不能成功加入任务队列
        vsCrawler.clearTask();

        //开始爬虫
        vsCrawler.start();

        // 增加种子
        System.out.println("注入一个种子任务");
        vsCrawler.pushSeed("http://www.java1234.com/");
    }
}

上面代码就会从http://www.java1234.com/ 开始遍历所有网页链接,但是我们发现我们并没有对抓取做任何定制,比如如何控制爬虫边界,如何处理文本内容,如何处理抓取结果等等。所以一般来说需要设置一些抓取参数。

public class CrawlerDemo {
    public static void main(String[] args) {

        // 启动爬虫
        VSCrawler vsCrawler = VSCrawlerBuilder.create()// 创建一个构造器
                .setProcessor(new PageDownLoadProcessor() {
                    @Override
                    protected void parse(Seed seed, String result, CrawlResult crawlResult) {
                        if (StringUtils.isEmpty(result)) {
                            return;
                        }
                        List<String> strings = allUrl(Jsoup.parse(result, seed.getData()));
                        crawlResult.addResults(strings);
                        // 控制爬虫边缘在www.java1234.com 站内执行
                        crawlResult.addStrSeeds(Lists.newLinkedList(Iterables.filter(strings, new Predicate<String>() {
                            @Override
                            public boolean apply(String input) {
                                return StringUtils.startsWithIgnoreCase(input, "http://www.java1234.com");
                            }
                        })));
                    }
                }).setSessionPoolCoreSize(15)// 核心15个用户
                .setSessionPoolMaxSize(55)// 最多55个用户
                .setSessionPoolReuseDuration(60 * 1000)// 每个用户1分钟之内不能同时使用
                .setSessionPoolMaxOnlineDuration(10 * 60 * 1000)// 每个用户最多存活10分钟
                .setWorkerThreadNumber(10)// 爬虫线程数目为 10个
                .build();
        vsCrawler.clearTask();

        vsCrawler.start();

        // 增加种子
        System.out.println("注入一个种子任务");
        vsCrawler.pushSeed("http://www.java1234.com/");
    }
}

如上用法,你会发现和国内类似的爬虫框架很类似,的确为了使用户使用简单,VSCrawler在设计的时候,就尽可能的保持和其他框架用法类似。爬虫基本用法大家都差不多,就不详细介绍了

results matching ""

    No results matching ""