0

JSON プラグインをインストールし、HTML ページのコンテンツを取得しました。ここで、クラスのみを持ち、ID を持たない特定のテーブルを解析して見つけたいと考えています。PHPクラスDOMDocumentを使用して解析します。テーブルの前にタグにアクセスし、その後、DOMDocumentを使用して次のタグ(私のテーブル)にアクセスするという考えがあります。例:

<a name="Telefonliste" id="Telefonliste"></a>
<table class="wikitable">

だから、私は拳<a>を手に入れ、その後私は手に入れ<table>ます。

次のコマンドを使用してすべてのテーブルを取得しましたが、特にgetElementsByTagName(). その後、私のテーブルがあるアイテム(2)にアクセスできます:

        $dom = new DOMDocument();

//load html source
$html = $dom->loadHTML($myHtml);

//discard white space
$dom->preserveWhiteSpace = false;

//the table by its tag name
$table = $dom->getElementsByTagName('table');
        $rows = $table->item(2)->getElementsByTagName('tr');

この方法は問題ありませんが、テーブルが item(2) にあることがわかったので、より一般的にしたいと思いますが、テーブルの前に新しいテーブルが HTML ページに含まれている場合など、場所を変更できます。私のテーブルはアイテム(2)ではなく、アイテム(3)になります。したがって、コードを変更せずにこのテーブルに到達できるように解析したいと考えています。DOMDocument を DOM パーサーとして使用できますか?

4

2 に答える 2

0

DOMXPath を使用して、式を必要に応じて一般化することができます。

例えば:

$dom = new DOMDocument();

//discard white space
$dom->preserveWhiteSpace = false;

//load html source
$dom->loadHTML($myHtml);

$domxpath = new DOMXPath($dom);
$table = $domxpath->query('//table[@class="wikitable" and not(@id)][0]')->item(0);
$elementBeforeTable = $table->previousSibling;
$rows = $table->getElementsByTagName('tr');
于 2013-08-14T17:11:02.430 に答える
0

Webスクレイピングを目的として、これの簡単な拡張機能を書き始めました。私はまだそれを取りたい方向に 100% 進んでいませんが、生のテキストではなく、検索の応答で元の HTML を取得する方法の例を見ることができます。

https://github.com/WolfeDev/PageScraper

編集:基本的なテーブル解析をすぐに実装する予定です。

于 2013-08-14T17:16:08.043 に答える