0

我正在尝试检索网页的内容并检查该页面是否包含我正在监视的某些错误关键字。(而不是每次手动加载每个 URL 来检查网站,我希望以编程方式执行此操作并在发生错误时标记出来)

我试过 XMLHttpRequest。我能够获取 HTML 内容,就像我在页面上“查看源代码”时看到的一样。但是我监控的页面在 Sharepoint 上运行,并且 Web 部件是动态生成的。我相信如果在加载这些部分时发生错误,我将无法将它们标记出来,因为我提取的 HTML 将不包含错误,而只是指向 webpart 的常用路径。

cURL 似乎也是如此。我刚刚阅读了有关 DOMDocument 的内容,我想知道 DOMDocument 是处理代码还是只是将 HTML 分解为层次结构。

我只希望有 URL 的内容。(就像您在 IE 中将网站另存为 txt 而不是 HTML 时得到的一样)。或者,如果我可以进一步处理 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 回答