2010-12-01 135 views
5

我想刮我的分銷商之一,每個產品的庫存數量。他們不知道如何導出這些數據。所以我想知道是否有人能夠幫助我指出如何使用PHP來抓取一個網站,而您必須登錄才能獲取數據?這不是一個安全的SSL網站。PHP網站用安全登錄刮

感謝您的任何提示,

克里斯·愛德華茲

+1

您必須提供更多詳細信息如何進行登錄,例如基本訪問身份驗證,或者? – ajreal 2010-12-01 18:54:44

回答

12

最簡單的方式得到你想要的是利用cURL的鏈接。 cURL的基本功能是它可以讓你配置一個HTTP請求,配置你需要的方式並接收響應。這可以根據您的需要以不同程度的細節完成。

你想做的事情基本上是做一個HTTP請求來獲取你想要的頁面,並從響應的HTML中刪除數據。這可以很容易做到,但在你的情況下,你需要克服一些障礙。

我假設說「必須登錄」你的意思是有一個登錄表單,你必須先通過才能夠抓取任何東西。 cURL可以僞造一個登錄,只需要你一點幫助。

首先,您需要使用cURL「提交」登錄表單,就像您手動操作一樣。爲了確保正確無誤,您需要在手動提交表單時查看瀏覽器發出的HTTP請求,並使用cURL構造相同的請求。要詳細查看HTTP請求,您可以使用Firebug,Chrome的開發人員工具或絕對精彩的Fiddler debugging proxy

很可能在提交了有效的登錄表單後,服務器會向您發送一個cookie,用於在隨後的請求中對您進行身份驗證。該cookie將成爲服務器HTTP響應標頭的一部分(Set-Cookie標頭)。您需要記住該cookie的價值,並在隨後的服務器上包含一個Cookie標頭 - 實際上,如果您已登錄,您的瀏覽器就會完全符合** 1的要求。

最後,您可能需要進行多次往返才能找到您的目標。也許你需要刮取的URL並不是事先知道的,你需要刮掉一個「列表」頁面來找出你想要刮取的URL的一些可變部分。這可以通過簡單地解決問題來解決:首先刮掉「列表」頁面,找出你需要的東西,然後刮掉你真正想要的「細節」頁面。

我沒有提供任何代碼,因爲網上有大量的cURL教程,但我相信知道計劃是什麼會讓你的工作變得更容易。


¹另一個(更快,但原油的)方式去解決這樣做是自己只需登錄,看到你得到了cookie的值,只是那粘貼到你刮的要求。好處是你不再需要用cURL僞造登錄名;缺點是在每次使用工具之前,有人必須手動登錄併爲工具提供憑證。

1

有一個叫做捲曲你應該看看它庫

link

它可以讓你的腳本登錄,使用Cookie /會話並從任何頁面中抓取內容,您可以設置它的深度應該如何以及是否應該遵循任何重定向等。 您甚至可以使用它來發布數據。這基本上是一個很好的工具。

這裏也是一個教程,你可以看到一步一步它是如何工作

http://devzone.zend.com/article/1081

+0

-1。雖然這是正確的,但這並不能幫助他進一步。只是說「使用X」並不能作爲一個好的答案。 – user187291 2010-12-01 19:01:31