2016-04-05 6 views
1

私はJavaでデスクトップアプリケーションを作成し、サイドプロジェクトとしてウェブページに加えられた変更を追跡し、教授がウェブページにコンテンツを追加するタイミングを監視しようとしています。私は少しの研究をしました。現在の方法は、Jsoupライブラリを使用してWebページを取得し、ハッシュアルゴリズムで実行し、現在のハッシュ値と前のハッシュ値を比較することです。ウェブページの変更を検出するためのアプリの開発

これは推奨されるアプローチですか?私は何かの研究をする前に、始める方法も何もなかったので、提案とアイデアは開いています。

+0

HTMLの解析でHTMLを取得するのは混乱しているようです。あなたはHTMLを解析していないので、なぜあなたはHTMLパーサーが必要だと思いましたか? – Laurel

+0

私はHTMLを解析したいと思った。なぜなら、私は迅速かつ容易に閲覧できるように変更を表示する予定だったからだ。 – bitscuit

答えて

0

ハッシュ方法の潜在的な問題:最新のWebサイトの多くがそうであるように、ページがリフレッシュごとに動的に生成されるコンテンツを含む場合、プログラムはページが絶えず変化していると報告します。サイト全体がこのような動的コンテンツ(広告、ヒットカウンター、ソーシャルメディアなど)を使用していない場合にのみ、ページ全体をハッシュします。

具体的には何が変更されていますか?新しい課題が投稿された可能性はありますか?いずれにしてもページ全体を監視する必要はありません。そのため、あなたはHTMLパーサを使用する必要があります - Jsoupの出番です

まず、パースページをDocumentオブジェクトに:

Document doc = Jsoup.parse(htmlString) 

あなたは今、多くの方法を実行することができます。 Documentオブジェクトのに移動し、HTMLノードをトラバースします。 (See Jsoup docs on DOM navigation methods)

たとえば、サイトにテーブルがあり、テーブルの各行が異なる割り当てを表しているとします。次のコードは、テーブルの各タグを選択することによって、そのIDとその行ごとにテーブルを取得します。

Element assignTbl = doc.getElementById("assignmentTable"); 
Elements tblRows = assignTbl.getElementsByTag("tr"); 
for (Element tblRow: tblRows) { 
    tblRow.html(); 
} 

あなたは、ページの構造を把握し、それに応じてコードを設計するために何らかの形で(例えばGoogle Chromeでエレメントを点検など)、Webページのソースコードを表示する必要があります。このようにすれば、アルゴリズムの信頼性が向上するだけでなく、変更された割り当ての詳細を抽出するなど、より多くの処理を行うことができます。 (支援が必要な場合は、対象のページのHTMLで質問を編集してください)

+0

ウェブサイトは静的で、主に課題や講義ノートが追加されたかどうかを確認することに興味があります。追加されたものが何であるかを判断して、GUIで表示/表示するためには、比較のためにページ/セクションの古いバージョンのコピーを保存する必要がありますか?私がコピーを保持していたら、コンテンツをハッシュして比較する理由は見当たりません。 – bitscuit

+0

True;たとえば、割り当てのHTML文字列の配列など、キャッシュされたコピーを保持すると、完全にハッシュを取り除くことができます。ハッシングは技術的に効率的ですが、少量のデータでは不要です。 – BradzTech

関連する問題