我正在尝试检索网页内容并检查该网页是否包含我正在监控的某些错误关键字。 (而不是每次手动加载每个URL以检查网站,我希望以编程方式执行此操作并在出现错误时将其标记出来)
我尝试过XMLHttpRequest。我能够获得HTML内容,就像我在页面上“查看源代码”时看到的那样。但我监控的页面在Sharepoint上运行,webparts是动态生成的。我相信如果在加载这些部分时发生错误,我将无法将它们标记出来,因为我拉的HTML不会包含错误,而只是通常的webparts路径。
cURL似乎也这样做。我刚刚阅读了DOMDocument,我想知道DOMDocument是否处理代码,或者只是将HTML分解为层次结构。
我只希望获得网址的内容。 (就像你在IE中将网站保存为txt时得到的结果,而不是HTML)。或者,如果我可以进一步处理HTML,那么它也会很好。我怎样才能做到这一点?任何帮助将非常感激。 :)
答案 0 :(得分: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';
}