工作中要求测试文本抽取器(Extractor),需要提供一个页面爬行模拟器(CrawlerSimulator)向Extractor提供爬行结果,基本需求如下:
1. 用web service实现;
2. 提供对外API可以用<key,value>的形式(确切的是<url,content>),将对应的页面信息存入缓存 Dictionary<string, string> cacheHtml 中,提供API从缓存中查询和移除,主要有3个API(AddEntry,RemoveEntry,RetriveEntry);
3. 提供ashx或者aspx页面供Extractor调用;
4. 可以随机生成页面内容(用DataFactory实现,由微软提供);
5. 可以覆盖所有Extractor可以捕获的错误信息;
6. 向Extractor返回不同的HTTP Status Code。
其中,有关HTTP301和HTTP302的情况,下面是其简单的区别
301 redirect: 301 代表永久性转移(Permanently Moved),302 redirect: 302 代表暂时性转移(Temporarily Moved )
下面是其模拟方法:
case CrawlerOptions.HTTP301:
context.Response.StatusCode = (int)HttpStatusCode.Moved;
context.Response.AddHeader("Location", "http://www.msn.com");
break;
case CrawlerOptions.HTTP302:
context.Response.Redirect("http://www.msn.com");
补充ing