【问题标题】:How to parse curl URL, CSS and images? [duplicate]如何解析 curl URL、CSS 和图像? [复制]
【发布时间】:2013-01-03 14:51:06
【问题描述】:

可能重复:
How do I save a web page, programatically?

我刚开始使用 curl,我已经成功地拉出了一个外部网站:

function get_data($url) {
  $ch = curl_init();
  $timeout = 5;
  curl_setopt($ch,CURLOPT_USERAGENT, $userAgent);
  curl_setopt($ch,CURLOPT_URL,$url);
  curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
  curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
  curl_setopt($ch,CURLOPT_FOLLOWLOCATION,true);
  $data = curl_exec($ch);
  curl_close($ch);
  return $data;
}
$test = get_data("http://www.selfridges.com");
echo $test;

但不包括 CSS 和图像。我还需要检索 CSS 和图像,基本上是整个网站。有人可以发布一个简短的方法让我开始了解如何解析 CSS、图像和 URL 以让我继续前进吗?

【问题讨论】:

    标签: php curl cross-domain


    【解决方案1】:

    有比 PHP 更好的工具来做到这一点,例如。 wget--page-requisites 参数。

    但请注意,自动抓取通常违反网站的 TOS。

    【讨论】:

    • 感谢您的信息,但是我了解到 wget 无法下载动态 PHP 站点。如果我使用 wget 会不会丢失很多内容和功能?
    • @user 这不是真的 - 在外面,一个网站就是一个网站,不管它是静态的还是由 PHP 动态生成的都没有关系。这个方法没有捕捉到的是动态 Javascript 但这完全是另一回事
    • 因此,如果我理解正确,使用 wget 完成我需要的操作将保留网站的所有链接、URL、图像、CSS 等。这一切都在我本地服务器上的一个文件夹中,然后我可以像这样简单地调用它? localhost:8888/downloadedSite/index.html 从用户的角度来看,所有下载的站点都将像实时站点一样运行?
    • @user 对于非常简单的网站,是的。然而,有很多事情可能会破坏,尤其是现在网站通过 Ajax 加载数据(有时是它们的全部内容)。该功能无法轻松离线复制。我会说试一试,并彻底测试最终结果,但请注意,如今大多数网站都依赖于实时服务器
    • 所以我想这对我来说仍然是不行的,我需要让一切都像现场一样正常工作。例如如果它是一个电子商务网站,事情可能会中断。如果我在 curl 中解析必要的元素,我是否能够获得与 wget 相同的功能但没有任何破坏?
    【解决方案2】:

    有用于 PHP 的 HTML 解析器。有很多可用的,这里有一篇讨论这个的帖子:How do you parse and process HTML/XML in PHP?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-22
      • 1970-01-01
      • 1970-01-01
      • 2017-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-03
      相关资源
      最近更新 更多