0

Web ページのコンテンツを取得し、監視している特定のエラー キーワードがページに含まれているかどうかを確認しようとしています。(サイトをチェックするために毎回各 URL を手動でロードする代わりに、プログラムでこれを行い、エラーが発生したときにフラグを立てることを望んでいます)

XMLHttpRequest を試しました。ページで「ソースを表示」したときに表示されるような HTML コンテンツを取得できます。しかし、監視しているページは SharePoint で実行され、Web パーツは動的に生成されます。これらのパーツをロードするときにエラーが発生した場合、プルする HTML にはエラーが含まれず、Web パーツへの通常のパスのみが含まれるため、フラグを立てることができないと思います。

cURL も同じようです。DOMDocument について読んだばかりで、DOMDocument がコードを処理するのか、HTML を階層構造に分割するだけなのか疑問に思っていました。

URLの内容だけを知りたいです。(HTML ではなく、IE で Web サイトを txt として保存したときに得られるものなど)。または、HTML をさらに処理できれば、それも良いでしょう。どうやってやるの?どんな助けでも本当に感謝します。:)

4

1 に答える 1

1

なぜ HTML を削除したいのですか? 使ったほうがいい!

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
$data = curl_exec($ch);
curl_close($ch);

// libxml_use_internal_errors(true);
$oDom = new DomDocument();
$oDom->loadHTML($data);

// Go through DOM and look for error (it's similar if it'd be
// <p class="error">error message</p> or whatever)
$errors = $oDom->getElementsByTagName( "error" ); // or however you get errors
foreach( $errors as $error ) {
    if(strstr($error->nodeValue, 'SOME ERROR')) {
        echo 'SOME ERROR occurred';
    }
}

それをしたくない場合は、次のようにすることができます:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
$data = curl_exec($ch);
curl_close($ch);
if(strstr($data, 'SOME_ERROR')) {
    echo 'SOME ERROR occurred';
}
于 2012-07-17T13:33:12.983 に答える