【问题标题】:Get processed content of URL获取处理后的 URL 内容
【发布时间】:2012-07-16 09:51:29
【问题描述】:

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

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

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

我只希望获得 URL 的内容。 (就像您在 IE 中将网站另存为 txt 而不是 HTML 时得到的一样)。或者,如果我可以进一步处理 HTML,那也很好。我怎样才能做到这一点?任何帮助将不胜感激。 :)

【问题讨论】:

  • 要明确,您想从网络中删除 html 标记并仅获取剩余数据吗?
  • 您好 Nish,我希望获得处理后的内容,例如在加载 javascript 并生成内容之后。没有带有 javascript 和函数的视图源,然后剥离了它们的标签。我应该举一个例子来更好地解释自己:)

标签: php javascript curl xmlhttprequest domdocument


【解决方案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';
}

【讨论】:

  • 你好!谢谢回答!我相信我必须剥离 HTML,因为我 cURL 所在的站点是一个共享点站点,并且可能有错误的地方将是动态内容。查看源代码未显示其中的内容。所以如果我的检查是基于这个字符串,我想我将无法捕捉到错误。
  • 查看源代码不显示里面的内容?那么内容是由 Javascript 生成的吗?在那种情况下,它会变得更加困难..
  • 嗯,是的。内容由 Javascript 生成。有什么方法可以检索内容吗?
  • 不是真的,看到这个问题:stackoverflow.com/questions/3922228/…你确定是js吗?可能有办法通过 XML 或 HTTP 代码检索错误? SharePoint 应该提供一种方法来做到这一点。或许再问一次您的问题,特别是关于 SharePoint 的问题?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多