# 链接解析器
风铃虫会根据 链接解析规则 构建出链接解析器 ,由链接解析器完成链接解析任务
# 基础使用
下面是一组链接提取规则的示例
"link" : { //链接解析规则
"startUrl": "起始链接,多个起始链接之间用半角逗号隔开",
"rules": [ //链接提取规则
{
"expression": "匹配表达式",
"pattern": "链接匹配模式"
}
]
}
链接解析规则由起始链接和一组链接提取规则组成,风铃虫根据链接提取规则动态生成对应的链接匹配器,多个链接匹配器之间是并列关系(或连接)。
特殊情况
如上述示例中,当为配置链接提取规则时,系统会默认使用关键词匹配器,只有包含起始链接中域名关键词的网页地址才会被匹配出来
链接的提取规则抽取规则可以配置多组,最终的链接抽取结果为 多组抽取器抽取出来的链接的总和。
关于匹配器请参见 匹配器
# 高级使用
在某些情况下,系统默认的链接解析器可能满足不了用户的链接解析要求,此时用户可是用自定义链接解析器来完成链接解析任务
1 先创建一个自定义链接解析器
import com.yishuifengxiao.common.crawler.domain.entity.Page;
import com.yishuifengxiao.common.crawler.link.LinkExtract;
import com.yishuifengxiao.common.tool.exception.ServiceException;
import java.util.List;
public class CustomLinkExtract implements LinkExtract {
/**
* 提取出网页里所有的链接
*
* @param linkRule 链接解析规则
* @param page 网页对象
* @throws ServiceException
*/
@Override
public void extractfinal LinkRule linkRule, final Page page) throws ServiceException {
//获取到网页原始文本信息
String rawTxt=page.getRawTxt();
//获取出内置解析器解析出来的原始链接集合
List<String> urls= page.getLinks();
////.....
// 执行自定义链接提取代码
List<String> links= 解析出来的数据
page.setLinks(links)
}
}
2 应用自定义链接解析器
Crawler crawler = .....
//此步骤一定要在启动之前进行
crawler.setLinkExtract(new CustomLinkExtract());
crawler.start();
在配置自定义链接解析器后,风铃虫内置链接解析器不会失效,自定义链接解析器会在置链接解析器之后运行。