2

noIDsと で無意味に書かれた生の html から目的のデータを抽出する方法はありclassesますか? つまり、保存された Web ページ (プロファイル) の html ファイルがあり、(たとえば)「趣味」などのデータを抽出したいとします。PHPを使用してこれを行うことは可能ですか?

4

4 に答える 4

1

このような PHP DOM パーサーを探しているようですね。HTML にセマンティック構造がまったくない場合、必要なデータを引き出すのは少し難しいかもしれませんが、DOM パーサーは出発点です。

于 2009-11-30T17:19:05.387 に答える
1

はい、この手法はWeb スクレイピングと呼ばれます。有効なhtmlの場合、DOMを使用できます。ページが動的に生成される場合、ジェネレーターは何らかの構造を使用していたはずであり、私の経験から、関心のある要素をいつでも分離できます。

DOM が機能しない場合は、正規表現を使用できます (これは、私が Web スパイダーを作成するときに常に行っていたことです)。正規表現は、DOM 階層に対してスクレイピング ロジックを記述するよりも効果的で高速です。そのため、いくつかのプロファイル ページを開いて、静的構造を分析する必要があります。次に、正規表現を記述して、対象のフィールドを分離します。

于 2009-11-30T17:20:00.440 に答える
1

正規表現を使用してください!私は子供です、私は子供です。同じページの状態が分かっていて、フォーマットが十分に類似していることが保証されている場合は、手動パーサーを作成してみることができます。あるいは、html を解析するライブラリがたくさんあります。私は PHP に精通してお勧めできるほどではありませんが、Google で調べてみると、長い道のりを歩むことができると確信しています。私は以前、John Resig の純粋な JavaScript HTML パーサーで運が良かったことがあります。

結局のところ、セマンティックに構築されていない html ページからセマンティック情報が必要な場合は、おそらくプログラム的に運命づけられており、最善の策は機械的な turkである可能性があります。

于 2009-11-30T17:23:25.457 に答える
0

PHP には 2 つのアプローチがあります。1 つ目は、tidy 拡張機能を使用してドキュメントをクリーンアップし、有効な XHTML、つまり整形式の XML にして、XML ツールを使用して解析できるようにすることです。

2 つ目は、PHP リリースのhtml5libパーサーを使用することです。これは、HTML5 の研究を現在のブラウザーの解析ルーチンに実装しようとするものです。ブラウザに表示される場合、html5lib はそれを解析できます。

どちらのアプローチを使用しても、xpath 式を使用してクエリできる DOM オブジェクトが得られます。理論上のドキュメントには意味構造が欠けているため、「3 番目の p 内の 5 番目のスパン」という考え方からドキュメント パーツを検討する必要があります。

詳細はこちら(自己リンク警告)。

于 2009-11-30T17:43:29.273 に答える