前言
本文讲解的第一个部分是parser包中的“解析数据结果类”,即接口ParseData及其实现类,包括BinaryParseData、HtmlParseData和TextParseData。三者之间的关系及包含属性如下图所示:
讲解的第二个部分是实现数据解析的工具类,如Parser、AllTagMapper、ExtractedUrlAnchorPair、ExtractedRulAnchoPair和NotAllowedCOntentException。
一.“解析数据结果类”
ParseData接口及其实现类如上图所示。除了BinaryParseData中没有找到binaryContent变量。不同的类持有不同的变量保存各自重要的数据。但是每个实现类都需要有此页面包含的url列表。
————貌似没什么讲啊,第二节讲其他类在稍作展开。
二.“解析工具类”
1.Parser类,继承了Configurable类
parser包中最重要的类Parser在WebCrawler中被调用,代码有三行,如下
/**
* 这个解析器用户这个爬虫实例解析爬取的内容
* The parser that is used by this crawler instance to parse the content of the fetched pages.
*/
private Parser parser;
...
public void init(int id,CrawlController crawlController){
...
this.parser=new Parser(crawlController.getConfig());
...
}
...
//对网页进行解析,将相关数据放在参数page中。稍后进行展开讲_在void processPage(WebURL)中调用
parser.parse(page, curURL.getURL());
如上几行代码所示,其实Parser类中最重要的函数也只有两个,分别是构造函数和解析函数,代码如下:
public class Parser extends Configurable {
protected static final Logger logger = LoggerFactory.getLogger(Parser.class);
//todo ??"html解析器"和"解析内容"??
private