2015-02-06 137 views
1

我試圖使用curl檢索html頁面。 我登錄後在一個網站,使用以下命令:如何通過curl返回一個html5頁面?

curl -o out.html -L -b cco.txt -c cco.txt -d "site=it&redirect_url=aHR0cDovL2l0LmFkdmZuLmNvbS9wLnBocD9waWQ9bW9u&login_username=NAME&login_password=PWWW&login_submit=Accedi" https://secure.advfn.com/login/secure 

我得到的代碼HTML5網頁,但沒有用它處理過的數據。

如何獲取數據,如瀏覽器快照? 沒有圖像(jpg,png ...),但是是一個文本文件。

+0

你是什麼意思「數據」?基本上一個網頁只是格式化文本。它可能是網站內容是使用JavaScript動態構建的,在這種情況下,您將無法通過捲曲獲取整個內容,因爲它不會執行任何JavaScript ... – 2015-02-06 10:33:58

+0

實際上!網站內容在瀏覽器窗口中動態構建和更新,但curl只返回代碼。 – bleish 2015-02-06 10:36:51

+0

在這種情況下,你實際上不需要請求頁面自我,而是爲web服務/ API/js文件/提取任何數據並通過html顯示它... – 2015-02-06 10:41:03

回答

1

我找到了我的問題的答案。簡單地說,捲曲是錯誤的。 我用PhantomJS了下面的簡單代碼:

var page = require('webpage').create(), 
    server = 'https://secure.advfn.com/login/secure', 
    data = 'site=it&redirect_url=aHR0cDovL2l0LmFkdmZuLmNvbS9wLnBocD9waWQ9bW9u&login_username=bl&login_password=PPPPPPP&login_submit=Accedi'; 


page.open(server, 'post', data, function (status) { 
    if (status !== 'success') { 
    console.log('Unable to post!'); 
    } else { 
    console.log(page.content); 
    } 
    page.render('example.png'); //optional 
    phantom.exit(); 
}); 

然後,它可以在控制檯上運行它:

[email protected] $ phantomjs --debug=true --ssl-protocol=any --cookies-file=cook.txt script.js > page 

獲得兩種渲染頁面,並與所需的所有數據的文本文件,讀取解析。

+0

Lol我剛剛發現了PhantomJS(已經看到過名字,但我很想知道它背後是什麼。 ..),並且回到這裏來指出你朝那個方向。 – 2015-02-18 10:17:41