0

クラス用のスクレイパーを作成する必要があり、実際に機能することを確認するためにテストを行いたいと考えていました。

私がスクレイピングしている Web サイトが Web サイトに変更を加えた場合、スクレーパーを更新するまで、Web サイトが失敗し、機能が無効になることを望みます。

単体テストを使用してスクレイパーをテストすると仮定すると、X 分ごとにテストを実行し、Y 機能を無効にする前にテストが壊れているかどうかを確認するツールはありますか?

私が求めているのは、スクレーパーが壊れた場合にユーザーが奇妙なメッセージを表示しないように、アプリケーションをより堅牢にするために利用できるツールは何ですか?

4

1 に答える 1

1
  1. Web サイトに予期しない HTML がある場合に、スクレイパーがカスタム例外をスローできるようにします。
  2. スクレイパーが HTMl を予期したときに実際に Web サイトを解析できることをテストするための単体テストを作成し、Web サイトを解析できないときにクラスがカスタム例外をスローすることもテストします。
  3. Web サイトのコンテンツを生成するコードで例外をキャッチします。エラーメッセージを送信してログに記録し、適切な情報をユーザーに表示します

また、解析されたコンテンツをローカルに保存する必要があります。リモート サーバーがダウンした場合、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 に答える