2012-11-23 29 views
1

我是Lynda.com的成員,我想從他們的網站獲取HTML頁面並將其保存到我的磁盤上,問題是每當我嘗試通過CURL獲取頁面時,我都會得到非會員頁面(它要求我簽了),我無法理解爲什麼我不能讓成員頁面:(CURL頁面到Lynda.com

我的代碼:

get_remote_file_to_cache(); 

function get_remote_file_to_cache() 
{ 

    $the_site = "http://www.lynda.com/AIR-3-0-tutorials/Flex-4-6-and-Mobile-Apps-New-Features/90366-2.html"; 

    $curl = curl_init(); 
    $fp = fopen("cache/temp_file.html", "w"); 
    curl_setopt($curl, CURLOPT_URL, $the_site); 
    curl_setopt($curl, CURLOPT_COOKIE, '/cookie.txt'); 
    curl_setopt($curl, CURLOPT_FILE, $fp); 

    curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE); 

    $http_headers = array(
     'Host: www.lynda.com', 
     'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0.2) Gecko/20100101 Firefox/6.0.2', 
     'Accept: */*', 
     'Accept-Language: en-us,en;q=0.5', 
     'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7', 
     'Connection: keep-alive' 
    ); 
    curl_setopt($curl, CURLOPT_HEADER, true); 
    curl_setopt($curl, CURLOPT_HTTPHEADER, $http_headers); 

    curl_exec($curl); 



    $httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE); 
    if($httpCode == 404) 
    { 
     touch('cache/404_err.txt'); 
    } 
    else 
    { 
     $contents = curl_exec($curl); 
     fwrite($fp, $contents); 
    } 


    curl_close($curl); 
} 

我對Windows 7和關於這個運行WAMP。

我不確定的事情之一是如果「cookie.txt」文件正在讀取或不讀取(不確定路徑是否正確所以我把cookie.txt文件放在服務器的根目錄以及我運行這個腳本的目錄中)。

在此先感謝!

-----------通過在線手冊---------

​​

找到了一些代碼,但它仍然無法正常工作:( 這是頁面,在這裏我得到了上面的代碼:http://php.net/manual/en/function.curl-setopt.php

回答

0

也許你需要發送Authorization頭,包含用戶名和密碼在HTTP報頭部分網站

+0

請看看上面添加的代碼。 – Ryan

1

您需要了解互聯網和HTTP工作你看,當你訪問一個網站時,他們通常是gi讓你的餅乾跟蹤你的狀態。您還將以非登錄成員身份開始。點擊登錄按鈕後,服務器會將您的狀態更新爲登錄狀態並將其存儲在服務器站點會話中或使用cookie在瀏覽器中存儲。

回到你的問題,既然你想訪問會員頁面,這意味着,你需要先完成以下步驟,瞭解lynda.com如何工作。但是,我下面的步驟是相當普遍的:

  1. 加載登錄頁面,用您的登錄信息獲取形式信息
  2. 注入形式的信息和發送的形式返回到服務器,從服務器
  3. 收到
  4. 存儲cookies
  5. 負荷會員頁面(不要忘了包括來自步驟4的cookie信息),並獲取HTML

欲瞭解更多信息,你可以看看這個資源:

+0

請看看上面添加的代碼。 – Ryan

0

爲了讓您需要登錄網站上的會員頁面。要做到這一點,你需要:

  1. 訪問登陸頁面
  2. 提出同樣的要求爲你的瀏覽器會做提交登錄憑據
  3. 獲取會員頁面

或者,你可以嘗試在登錄後從您的瀏覽器中提取cookie,並使用它們與curl_setopt($ch, CURLOPT_COOKIE, 'a=b;c=d');捲曲,但這可能不起作用,因爲該網站也可以使用IP或會話檢查。