【问题标题】:curl PHP does not load full page content but only loading gifcurl PHP 不加载整页内容,只加载 gif
【发布时间】:2017-04-17 10:06:46
【问题描述】:

我正在尝试爬取页面,但只检索加载 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);

检索整页的任何方式。

【问题讨论】:

    标签: php curl web-crawler


    【解决方案1】:

    这是有原因的。

    1. Curl 不是浏览器。所以Curl 没有运行javascript 的能力。
    2. Curl 不关心它给你的响应是什么,无论你给它链接是为了什么。如果它得到一个 gif,它将返回 gif,它是文档、视频或任何它将返回响应的内容。

    所以发生的事情是,它会在您点击页面后立即得到您的响应。有一个正在加载的 gif,它会返回你正在加载的 gif。然后根据javascript条件加载剩余页面。因为它无法执行 javascript,所以您得到的唯一响应是加载 gif。

    如果你想加载完整的页面内容,有一个完整的 webkit 浏览器,没有一个界面,可以帮助程序员实现浏览器获得的结果。PhantomJS - Scriptable Headless Browser.

    【讨论】:

      【解决方案2】:

      我看到您已经尝试为您的 curl 添加延迟,但事实是 curl 不是这项工作的正确工具。我会调查http://phantomjs.org/,这将使您能够更可靠地捕获页面。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-08-21
        • 2011-07-25
        • 1970-01-01
        • 1970-01-01
        • 2014-01-17
        • 2019-01-31
        • 1970-01-01
        • 2013-10-26
        相关资源
        最近更新 更多