0

Web ページを解析し、Web ページにある表を印刷しようとしています。php_simple_html dom パーサーを使用しています。ただし、Web ページからテーブルを解析しようとすると、テーブルを出力するすべての JavaScript コマンドが php 内のコメントに変換されます。

<html>
<script type="text/javascript" src="jquery.js"></script>
<?php
    include 'crawling/simple_html_dom.php';
    $html = file_get_html('http://uiucfreefood.com/');


    $ret = $html->find('body', 0)->find('div', 10)->find('table',0); //gets to the table tag
    echo $ret; // nothing is echoed out because the original webpage uses jscript commands to write the table to the page but these commands get turned to comments for some reason.
?>
</html>

解析された情報をエコーし​​ているページの要素を調べると、すべての情報を含むテーブル タグがそこにあるのに、jscript コマンドがコメントになっていることがわかります。情報を取得して自分でエコーする方法はありますか? 別の ->find('tbody'); を追加してみました。parse コマンドの最後にありますが、何もしません。アドバイスをいただければ幸いです。ありがとう。

編集: simple_html_dom.php をダウンロードして php ファイルに含めると、このコードを自分で試すことができます。ソース: http://sourceforge.net/projects/simplehtmldom/files/

編集:本当に重要なことに気づきました。JavaScript コマンドは、元の Web ページでもコメントアウトされています。代わりに、元の Web ページは JavaScript 関数を使用して、私が定義していないテーブルを出力しています。その関数を自分で作成すると、問題が解決するはずです。

編集:うん、うまくいった。

4

1 に答える 1

2

get HTML の代わりに file_get_content を使用してみて、それが機能するかどうかを確認してください。正直なところ、必要に応じて、独自のパーサーをコーディングする必要があります。テーブル スキャンと表示用のパーサーを作成するのはそれほど難しくありません。

次のものだけが必要です。

$array = split("<table>", $content);
$boolPlaceHolder = false;

この方法に遭遇したら、プレースホルダーを true に設定して、コンテンツの文字をスキャンしてテーブルを取得できます。

お役に立てれば。

于 2013-11-12T04:05:44.660 に答える