# 链接解析器

风铃虫会根据 链接解析规则 构建出链接解析器 ,由链接解析器完成链接解析任务

# 基础使用

下面是一组链接提取规则的示例

  "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();

在配置自定义链接解析器后,风铃虫内置链接解析器不会失效,自定义链接解析器会在置链接解析器之后运行。


Last Updated: 5/24/2020, 9:59:14 AM