2012-07-17 51 views
0

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

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

cURL似乎也这样做。我刚刚阅读了关于DOMDocument的信息,并且想知道DOMDocument是处理代码还是仅仅将HTML分解为分层结构。

我只希望拥有该网址的内容。 (就像在IE中将网站保存为txt时所得到的一样,而不是HTML)。或者如果我可以进一步处理HTML,那么它也会很好。我怎样才能做到这一点?任何帮助将非常感激。 :)

+0

要清楚你想从网络上删除HTML标记并获得唯一剩余的数据? – Nish 2012-07-17 13:16:44

+0

你好,我希望得到处理后的内容,就像在加载javascript和生成内容之后。不是一个查看源的JavaScript和功能仍然存在,然后剥离他们的标签。我应该举个例子来更好地解释我自己:) – user1531773 2012-07-17 16:23:48

回答

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'; 
} 
+0

Hi Dow!谢谢回答!我相信我必须去掉HTML,因为我蜷缩在一起的网站是一个SharePoint站点,可能有错误的地方将成为动态内容。查看源未显示其中的内容。所以如果我的支票是基于这个字符串的话,我认为我不会发现错误。 – user1531773 2012-07-17 16:18:03

+0

查看源文件是不是显示内容?所以内容是从Javascript生成的?在那种情况下,它会变得更加困难.. – Doa 2012-07-18 08:33:44

+0

erm yes。内容是从Javascript生成的。有什么方法可以检索内容吗? – user1531773 2012-07-18 15:54:34