0

我必须为课堂写一个刮板,我想对其进行测试以确保它确实有效。

如果我正在抓取的网站对其网站进行了更改,我希望我们的网站失败并禁用该功能,直到我们更新抓取工具。

假设我使用单元测试来测试刮板,是否有一些工具会每 X 分钟运行一次测试,并在禁用 Y 功能之前查看它是否损坏?

我想我要问的是,我可以利用哪些工具来使我的应用程序更健壮,以便我的用户在我的刮板损坏时不会看到一些奇怪的消息?

4

1 回答 1

1
  1. 当网站出现意外的 HTML 时,让爬虫抛出自定义异常
  2. 编写单元测试以测试爬虫在预期 HTMl 时实际上可以解析网站,并测试该类在无法解析网站时是否抛出自定义异常
  3. 在生成网站内容的代码中捕获异常。发送错误消息以记录并向用户显示合适的信息

您还应该将解析的内容保存在本地。万一远程服务器关闭,您可以回退到保存的内容,而不是抛出您的 ScraperParseThingyException。

您可以通过多种方式对此进行监控。最简单的方法是不时留意错误日志。

$scraperConfiguration = array(
   'disable_on_error'      => true,
   'notify_on_first_error' => true,
   'notify_email'          => 'scrape-errors@example.com',
);

...

$scraper = new Scraper($scraperConfiguration);
$scrapeResult = $scraper->scrape();

...

正如这个小爬虫外观所示,您可以配置它的内部错误处理,在这里自动禁用并发送通知以防发生错误。

因为它会被自动禁用,所以您的站点将返回一个空结果,并且在您解决问题之前不再需要太多关注。

此外,您可以在带有测试配置的测试用例中使用它(例如,抛出异常并对其进行测试,而不是发送电子邮件并在错误时禁用),以便您已经在测试中看到,尤其是在开发和维护时组件。

于 2012-10-11T11:56:19.403 回答