【问题标题】:cURL get html page result emptycURL 获取 html 页面结果为空
【发布时间】:2019-01-31 12:01:28
【问题描述】:

我有一些代码可以从提供的 url 获取网页。网址看起来像这样:

https://www.facebook.com/events/383049449109054/

这是我获取页面的代码:

function GetHtmlContents($url){
    echo $url;
    $ch = curl_init();
    $timeout = 5;
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
    $data = curl_exec($ch);
    curl_close($ch);
    return $data;
    echo "<br>";
    echo $data;
}

但是当我从本地主机运行它时,echo $data 是空的,它不显示任何内容。
我该如何解决?这是我第一次使用 cURL。

【问题讨论】:

    标签: php html url curl


    【解决方案1】:

    您可以使用此代码获取页面内容 "

    函数GetHtmlContents($url)

    {
    

    $user_agent="Mozilla/5.0 (Windows NT 6.1; rv:8.0) Gecko/20100101 Firefox/8.0";

        $options = array(
    
            CURLOPT_CUSTOMREQUEST  =>"GET",        //set request type post or get
            CURLOPT_POST           =>false,        //set to GET
            CURLOPT_USERAGENT      => $user_agent, //set user agent
            CURLOPT_COOKIEFILE     =>"cookie.txt", //set cookie file
            CURLOPT_COOKIEJAR      =>"cookie.txt", //set cookie jar
            CURLOPT_RETURNTRANSFER => true,     // return web page
            CURLOPT_HEADER         => false,    // don't return headers
            CURLOPT_FOLLOWLOCATION => true,     // follow redirects
            CURLOPT_ENCODING       => "",       // handle all encodings
            CURLOPT_AUTOREFERER    => true,     // set referer on redirect
            CURLOPT_CONNECTTIMEOUT => 120,      // timeout on connect
            CURLOPT_TIMEOUT        => 120,      // timeout on response
            CURLOPT_MAXREDIRS      => 10,       // stop after 10 redirects
        );
    
        $ch      = curl_init( $url );
        curl_setopt_array( $ch, $options );
        $content = curl_exec( $ch );
        $err     = curl_errno( $ch );
        $errmsg  = curl_error( $ch );
        $header  = curl_getinfo( $ch );
        curl_close( $ch );
    
        $header['errno']   = $err;
        $header['errmsg']  = $errmsg;
        $header['content'] = $content;
        return $header;
    }    print_r(GetHtmlContents('https://www.facebook.com/events/383049449109054/'));
    

    "

    【讨论】:

      【解决方案2】:

      试试这个,它应该适合你。

      function GetHtmlContents($url){
          echo file_get_contents($url); 
      }
      

      阅读更多关于file_get_contents()

      http://php.net/manual/en/function.file-get-contents.php

      【讨论】:

      • 但在您的情况下,您正在尝试获取 facebook 事件。您为什么不尝试使用 facebook graph api 获取 facebook 事件?它可以为您提供您在此活动页面中寻找的所有内容。
      • 您好,感谢您的回复,我知道我可以只使用 FB api,但由于我不喜欢 facebook 如何明智地对待用户隐私,我不想使用 fb api:/
      • 好的,然后尝试使用我给定的代码。告诉我它是否适合你
      • 当我运行你的代码时,我得到一个 fb 页面,告诉我我的浏览器不受支持.. 我需要将正确的 html 加载到 DOM 元素中
      • 我已经对另一个 url 进行了同样的尝试,它适用于所有 url 而不是 fb 页面 stackoverflow.com/questions/ask');
      猜你喜欢
      • 1970-01-01
      • 2013-07-08
      • 1970-01-01
      • 2015-12-08
      • 1970-01-01
      • 2015-11-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-09
      相关资源
      最近更新 更多