掻き取りされているウェブサイトが変更された場合にどのように知っていますか?

StackOverflow https://stackoverflow.com/questions/2530285

質問

私はウェブサイトをこすりし、いくつかのデータを収集するためにPHPを使用しています。これは、すべての正規表現を使用せずに行われています。私の代わりに、特定のHTMLタグを見つけるために、PHPの爆発()メソッドを使用しています。

ウェブサイトの変更(CSS、HTML)の構造ならば、間違ったデータは、スクレーパーで収集される可能性があります。そこで質問です - HTMLの構造が変更された場合、どのように私は知っていますか?どのように間違ったデータが格納されるのを避けるために私のデータベースにデータを格納する前に、これを識別します。

役に立ちましたか?

解決

私はあなたがどこ内容変更ページをこするしている場合は、任意のクリーンなソリューションを持っていないと考えています。

私はいくつかのpythonスクレーパーを開発していると私はサイトはちょうどそのレイアウト上の微妙な変更を行ったときにイライラすることができます方法を知っています。

あなたはア・ラ・Mechanizeの解決を試みることができる(PHPの対応を知らない)と運がよければあなたが抽出するために必要なコンテンツ隔離することができ(リンク?)ます。

別のpossibileアプローチはいくつかの制約をコード化してDBに格納する前にそれらを確認することです。

たとえば、あなたがURLをこするしている場合、あなたはどのようなスクレーパーが解析されたことを確認する必要があります正式に有効なURLです。整数のIDまたはあなたがそれをこすりしたいものは何でものために同じことが有効であると認識することができます。

あなたはプレーンテキストをこするしている場合は、

、それを確認することがより困難になります。

他のヒント

あなたが構造に関して変更を知りたい場合は、私は最善の方法は、あなたの最初のページのDOM構造を格納し、新しいものとを比較することだと思います。

あなたがそれを行うことができる方法はたくさんあります: - SAXParserの DOMParserになど

私は私が何を意味するかにいくつかのポインタを与える小さなブログを持っています ます。http://レットthem- c.blogspot.com/2009/04/xml-as-objects-in-oops.htmlする

か、 http://en.wikipedia.org/wiki/Simple_API_for_XML に使用することができますまたはDOMユーティリティパーサ。

ここに私のお尻から出ていえば、その可能性は、いくつかのドキュメントオブジェクトモデルPHPの方法を見てみたいことがあります。

http://php.net/manual/en/book.dom.php

DOMの私は非常に、非常に限られた理解が正しければ、

、HTMLサイトの構造の変化は、ドキュメントオブジェクトモデルを変更するだろうが、固定構造内の簡単な内容変更はないだろう。あなたはその後、DOMの状態をキャプチャし、可能性があれば、あなたは理論的には、このような変更が行われたことを判断することができませんでした、それぞれのこすりで、それを比較する?

(ちなみに、私は司法試験の結果は、特定のページに掲載されたときに電子メール通知を取得しようとしていたとき、私はこれをしなかった道はただのfile_get_contents()の値を比較しては驚くべきことに、完璧に働いた:いいえ偽陽性を、そして、すぐにサイトがコンテンツを投稿して私を電子メールで送信。)

は、サイトによって異なりますが、あなたは、ページの構造が変更されているかどうかを検出後に擦り傷のそれに対して、これらの合計を比較することにより、DIV、クラス&スタイルタグのような掻き取り、ページ内のページ要素の数を数えることができます。

似プロセスは、各々の名前各クラスまたはIDは、単純な正規表現を使用して抽出格納され、必要に応じて確認することができたCSSファイルを使用することができます。このリストは新たに追加されている場合、ページの構造は、ほぼ確実に掻き取りされたサイト上のどこかを変更しました。

まず、いくつかのケースでは、あなたはハッシュするのを比較することもできます新しいHTMLのオリジナル。 MD5とSHA1は、2つの人気のハッシュです。これは、またはすべての状況で有効であるが、あなたが精通している必要があり何かでない場合があります。コンテンツ、タグ、または何かを - 何かが変更された場合、これはあなたを教えてくれます。

構造を使用すると、タグの出現のヒストグラムをキャプチャし、それらを比較する必要があります変更されている場合を理解するために。あなたはタグが順不同であることを気にしている場合、あなたは、タグのツリーをキャプチャし、タグが同じ順序で起こるかどうかを確認するために比較を行う必要があります。これは、あなたが達成したいものに非常に具体的であることを行っている。

PHPあなたがHTMLを解析するのに役立ちますツールですのシンプルなHTML DOMパーサます。

Explode()は、HTMLパーサはありませんが、HTML構造の変化について知りたいです。それはトリッキーになるだろう。 HTMLパーサを使用してみてください。他に何もこれを適切に行うことができるようになります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top