# 快速启动

风铃虫实例主要有以下两种构建方式

# 通过风铃虫对象创建

    //创建一个提取规则
    //该提取规则标识使用 XPATH提取器进行提取,
    // XPATH的表达式为 //h1/text() ,该提取提取器的作用顺序是0
    FieldExtractRule extractRule = new FieldExtractRule(Rule.XPATH, "//h1/text()", "", 0);

    //创建一个提取项
    ContentItem contentItem = new ContentItem();
    contentItem
        .setFiledName("name") //提取项代码,不能为空
        .setName("新闻标题") //提取项名字,可以不设置
        .setRules(Arrays.asList(extractRule)); //设置提取规则

     //创建一个风铃虫实例
     CrawlerBuilder builder = CrawlerBuilder.create()
        .startUrl("https://news.ifeng.com/c/7sMchCLy5se") //风铃虫的起始链接
        // 风铃虫会将每次请求的网页的内容中的URL先全部提取出来
        // 然后将完全匹配此规则的链接放入链接池,作为下次请求的种子链接。
        // 如果不设置则表示提取链接中所有包含域名关键字(例如此例中的ifeng)的链接放入链接池
        //链接提取规则,多可添加多个链接提取规则
        .addLinkRule("http[s]?://news\\.ifeng\\.com/.*")//链接提取规则
        //可以设置多个内容页的规则,多个内容页规则之间用半角逗号隔开
        //只要内容页URL中完全匹配此规则就进行内容提取,如果不设置标识提取域名下所有的链接
        .extractUrl("https://news\\.ifeng\\.com/c/[A-Za-z0-9]+") //内容页的规则,
        //风铃虫可以设置多个提取项,这里为了演示只设置了一个提取项
        .addExtractItem(contentItem) //增加一个提取项
        //每次进行爬取时的平均间隔时间,单位为毫秒
        //如果不设置则使用默认时间10秒,此值时为了防止抓取频率太高被服务器封杀
        .interval(8000);


        //风铃虫规则信息
        CrawlerRule rule = builder.build();
        //构建一个简单的风铃虫实例
        Crawler crawler = Crawler.create(rule);

# 通过构建器创建

    //创建一个提取规则
    //该提取规则标识使用 XPATH提取器进行提取,
    // XPATH的表达式为 //h1/text() ,该提取提取器的作用顺序是0
    FieldExtractRule extractRule = new FieldExtractRule(Rule.XPATH, "//h1/text()", "", 0);

    //创建一个提取项
    ContentItem contentItem = new ContentItem();
    contentItem
        .setFiledName("name") //提取项代码,不能为空
        .setName("新闻标题") //提取项名字,可以不设置
        .setRules(Arrays.asList(extractRule)); //设置提取规则

     //创建一个风铃虫实例
     CrawlerBuilder builder = CrawlerBuilder.create()
        .startUrl("https://news.ifeng.com/c/7sMchCLy5se") //风铃虫的起始链接
        // 风铃虫会将每次请求的网页的内容中的URL先全部提取出来
        // 然后将完全匹配此规则的链接放入链接池,作为下次请求的种子链接。
        // 如果不设置则表示提取链接中所有包含域名关键字(例如此例中的ifeng)的链接放入链接池
        //链接提取规则,多可添加多个链接提取规则
        .addLinkRule("http[s]?://news\\.ifeng\\.com/.*")//链接提取规则
        //可以设置多个内容页的规则,多个内容页规则之间用半角逗号隔开
        //只要内容页URL中完全匹配此规则就进行内容提取,如果不设置标识提取域名下所有的链接
        .extractUrl("https://news\\.ifeng\\.com/c/[A-Za-z0-9]+") //内容页的规则,
        //风铃虫可以设置多个提取项,这里为了演示只设置了一个提取项
        .addExtractItem(contentItem) //增加一个提取项
        //每次进行爬取时的平均间隔时间,单位为毫秒
        //如果不设置则使用默认时间10秒,此值时为了防止抓取频率太高被服务器封杀
        .interval(8000);
     
        //构建一个简单的风铃虫实例
        Crawler crawler = builder.creatCrawler();

无论是哪种构建方法,生成一个风铃虫的最基础的提供信息必须包含以下两种:

  • 风铃虫的起始链接
  • 至少一个内容提取项信息

在风铃虫启动成功后,每个风铃虫都会具有一个唯一的随机的名字,用于分辨风铃虫,获取方法如下

crawler.getName()

在风铃虫实例启动后,禁止进行修改属性的操作,否则可能会导致风铃虫运行异常

# 重要概念

链接提取规则

告诉风铃虫从下载的网页内容里提出哪些链接,因为下载的网页内容里包含有很多的链接,并不是每个链接都是使用者需要抓取的,例如每个网站里的友情链接和备案类型的链接一般情况下都是需要排除的,使用者可以利用链接提取规则来排除这部分链接,使之不加入到抓取任务之中。

一般来说,链接提取规则用来告诉风铃虫哪些页面是内容页和列表页

内容页规则

告诉风铃虫从哪些网页里提取数据信息。不是每个网页里都包含有需要提取的数据,例如你需要提取的数据包含在内容页里,如果你在列表页里去提取这些数据,很有可能提取失败,也会浪费服务器的计算资源。因此,用户可以简单地认为内容页规则就是告诉风铃虫那些网页时内容页,需要从里面提取出数据,哪些网页不是内容页,不需要从里面提取出数据。

一般来说,链接提取规则用来告诉风铃虫哪些页面是内容页



Last Updated: 1/6/2020, 9:10:45 PM