noIDs
と で無意味に書かれた生の html から目的のデータを抽出する方法はありclasses
ますか? つまり、保存された Web ページ (プロファイル) の html ファイルがあり、(たとえば)「趣味」などのデータを抽出したいとします。PHPを使用してこれを行うことは可能ですか?
4 に答える
このような PHP DOM パーサーを探しているようですね。HTML にセマンティック構造がまったくない場合、必要なデータを引き出すのは少し難しいかもしれませんが、DOM パーサーは出発点です。
はい、この手法はWeb スクレイピングと呼ばれます。有効なhtmlの場合、DOMを使用できます。ページが動的に生成される場合、ジェネレーターは何らかの構造を使用していたはずであり、私の経験から、関心のある要素をいつでも分離できます。
DOM が機能しない場合は、正規表現を使用できます (これは、私が Web スパイダーを作成するときに常に行っていたことです)。正規表現は、DOM 階層に対してスクレイピング ロジックを記述するよりも効果的で高速です。そのため、いくつかのプロファイル ページを開いて、静的構造を分析する必要があります。次に、正規表現を記述して、対象のフィールドを分離します。
正規表現を使用してください!私は子供です、私は子供です。同じページの状態が分かっていて、フォーマットが十分に類似していることが保証されている場合は、手動パーサーを作成してみることができます。あるいは、html を解析するライブラリがたくさんあります。私は PHP に精通してお勧めできるほどではありませんが、Google で調べてみると、長い道のりを歩むことができると確信しています。私は以前、John Resig の純粋な JavaScript HTML パーサーで運が良かったことがあります。
結局のところ、セマンティックに構築されていない html ページからセマンティック情報が必要な場合は、おそらくプログラム的に運命づけられており、最善の策は機械的な turkである可能性があります。
PHP には 2 つのアプローチがあります。1 つ目は、tidy 拡張機能を使用してドキュメントをクリーンアップし、有効な XHTML、つまり整形式の XML にして、XML ツールを使用して解析できるようにすることです。
2 つ目は、PHP リリースのhtml5libパーサーを使用することです。これは、HTML5 の研究を現在のブラウザーの解析ルーチンに実装しようとするものです。ブラウザに表示される場合、html5lib はそれを解析できます。
どちらのアプローチを使用しても、xpath 式を使用してクエリできる DOM オブジェクトが得られます。理論上のドキュメントには意味構造が欠けているため、「3 番目の p 内の 5 番目のスパン」という考え方からドキュメント パーツを検討する必要があります。
詳細はこちら(自己リンク警告)。