实现机器人过滤器的正确方法是什么,在Ncrawler中扩展接口IRobot
?
在我发现的少数文档中,it is possible说,但没有说明如何做。此外,我是C#的新手,所以我不理解一些代码。
特别是在示例中找到的以下部分,其中似乎很容易引入新规则类但不是新的机器人过滤器:
// Register new implementation for ICrawlerRules using our custom class CustomCrawlerRules defined below
NCrawlerModule.Register(builder =>
builder.Register((c, p) =>
{
NCrawlerModule.Setup(); // Return to standard setup
return new CustomCrawlerRules(p.TypedAs<Crawler>(), c.Resolve<IRobot>(p), p.TypedAs<Uri>(),
p.TypedAs<ICrawlerHistory>());
}).
As<ICrawlerRules>().
InstancePerDependency());
RobotService
类已在某处“注册”,但CustomCrawlerRules
内的任何位置都没有设置。可以找到所有代码here。
答案 0 :(得分:1)
尝试在 NCrawlerModule 注册表中注册您自己的 CustomRobotService 。
代码看起来应该是这样的:
builder.Register((c, p) => new CustomRobotService(p.TypedAs<Uri>(), c.Resolve<IWebDownloader>())).As<IRobot>().InstancePerDependency();