複数のウェブページのスナップショットを2回撮影しました。どのWebページが変更されたかを判断するための信頼できる方法は何ですか?
RSSフィードのようなものに頼ることはできず、日付テキストのような小さなノイズを無視する必要があります。
理想的にはPythonソリューションを探していますが、直感的なアルゴリズムも素晴らしいでしょう。
ありがとう!
さて、最初にあなたは何がノイズで何がそうでないかを決める必要があります。BeautifulSoupのようなHTMLパーサーを使用して、ノイズを除去し、結果をきれいに印刷して、文字列として比較できます。
自動ソリューションを探している場合はdifflib.SequenceMatcher
、ページ間の差異を計算し、類似性を計算して、それをしきい値と比較するために使用できます。
解決策は、特定のサイトをスクレイピングするか、どのサイトでも機能するプログラムを作成しようとしているかによって異なります。
次のようにして、どの領域が頻繁に変化するかを確認できます。
diff <(curl http://stackoverflow.com/questions/) <(sleep 15; curl http://stackoverflow.com/questions/)
1 つのサイトだけを心配している場合は、sed 式をいくつか作成して、タイムスタンプなどを除外することができます。小さなフィールドで違いが見られなくなるまで繰り返すことができます。
一般的な問題ははるかに難しいので、最初にページの総単語数を比較することをお勧めします。
変更のしきい値を適切な量のノイズを無視する距離に設定すると、レーベンシュタイン距離のようなものが役立つ可能性があります。
MD5 または SHA1 を使用してファイルのスナップショットを作成するだけです...次回チェックしたときに値が異なる場合、それらは変更されます。