风铃虫入门教程快速创建风铃虫
风铃虫实例主要有以下两种构建方式
通过风铃虫对象构建
//创建一个提取规则 //该提取规则标识使用 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/>
以上是 风铃虫入门教程快速创建风铃虫 的全部内容, 来源链接: utcz.com/z/511846.html