风铃虫入门教程:快速创建风铃虫

我们两清 提交于 2019-12-19 21:35:12

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

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

通过风铃虫对象构建

        //创建一个提取规则
        //该提取规则标识使用 XPATH提取器进行提取,XPATH的表达式为 //h1[@class='topic-_XJ6ViSR']/text() , 该提取提取器的作用顺序是0
        FieldExtractRule extractRule = new FieldExtractRule(Rule.XPATH, "//h1[@class='topic-_XJ6ViSR']/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) //增加一个提取项,风铃虫可以设置多个提取项,这里为了演示只设置了一个提取项
                .interval(8);= 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) //增加一个提取项,风铃虫可以设置多个提取项,这里为了演示只设置了一个提取项
                .interval(8);//每次进行爬取时的平均间隔时间,单位为秒,如果不设置则使用默认时间10秒,此值时为了防止抓取频率太高被服务器封杀
        //风铃虫规则信息
        CrawlerRule rule = builder.build();
        //构建一个简单的风铃虫实例
        Crawler crawler = Crawler.create(rule);

通过风铃虫构建器构建

//创建一个提取规则
        //该提取规则标识使用 XPATH提取器进行提取,XPATH的表达式为 //h1[@class='topic-_XJ6ViSR']/text() , 该提取提取器的作用顺序是0
        FieldExtractRule extractRule = new FieldExtractRule(Rule.XPATH, "//h1[@class='topic-_XJ6ViSR']/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) //增加一个提取项,风铃虫可以设置多个提取项,这里为了演示只设置了一个提取项
                .interval(8);= 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) //增加一个提取项,风铃虫可以设置多个提取项,这里为了演示只设置了一个提取项
                .interval(8);//每次进行爬取时的平均间隔时间,单位为秒,如果不设置则使用默认时间10秒,此值时为了防止抓取频率太高被服务器封杀
        
        
        //构建一个简单的风铃虫实例
        Crawler crawler = builder.creatCrawler();

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

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

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

crawler.getName()

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

相关资源:

官方文档 在线API 源码 <br/><br/>

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!