# 链接解析器

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

# 基础使用

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

  "link" : {
         //起始链接,多个起始链接之间用半角逗号隔开
        "startUrl" : "https://www.abcded.com.cn/xxxx/css3_intro.asp", 
        // 链接的提取规则,正则表达式
        "rules" : [  
            "/**"
        ]
    }

链接解析规则由起始链接和一组链接的提取规则组成,风铃虫根据链接的提取规则构建出链接解析器,多个链接提取器组合成链接解析器

链接解析器由一系列的链接抽取器组成,目前链接抽取器主要是根据 正则表达式 进行抽取,只有 完全符合 提取规则中的正则表达式的链接才会被抽取出来。

特殊情况

如上述示例中,当链接提取表达式为/**时表示只有链接中包含域名关键字的超链接才会被抽取出来。例如在本例子中表示抽取所有域名中包含 abcded 关键字的超链接

链接的提取规则抽取规则可以配置多组,最终的链接抽取结果为 多组抽取器抽取出来的链接的总和。

# 高级使用

在某些情况下,系统默认的链接解析器可能满足不了用户的链接解析要求,此时用户可是用自定义链接解析器来完成链接解析任务

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 {
    @Override
    public void extract(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: 1/7/2020, 10:34:40 PM