curl PHP不加载整页内容,只加载gif

时间:2017-04-17 10:06:46

标签: php curl web-crawler

我正在尝试抓取页面,但只检索加载GIF而不是页面内容。

$url        = "https://www.truecaller.com";
        $request    = $url;
        $ch         = curl_init();
        curl_setopt($ch, CURLOPT_URL,$request);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_TIMEOUT, 120);
        curl_setopt($ch, CURLOPT_HEADER, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        $data = curl_exec($ch);
        print_r($data);
        curl_close($ch);

以任何方式检索整页。

2 个答案:

答案 0 :(得分:1)

这是有原因的。

  1. Curl不是浏览器。因此Curl无法运行javascript。
  2. Curl不在乎它为您提供链接所获得的响应是​​什么。如果得到的是gif,它将返回gif,doc,视频或返回响应的任何内容。

因此,正在发生的是,只要您点击页面,它就会得到您的响应。首先会加载一个gif,它将返回您加载的gif。然后根据javascript条件加载剩余页面。因为它无法执行javascript,所以您得到的唯一响应就是加载gif。

如果您想加载整个页面的内容,可以使用完整的Webkit浏览器,该浏览器不带界面,该界面可以帮助程序员随着浏览器的获得而获得结果。PhantomJS - Scriptable Headless Browser.

答案 1 :(得分:0)

我看到你已经尝试过为你的卷曲添加一个延迟,但事实是卷曲不是这项工作的正确工具。我会调查http://phantomjs.org/,这样可以更有力地捕获页面。

@hassan在下面添加,这个网站有一个API,所以这也是一个选项。谢谢哈桑。