2010-10-07 94 views
2

我知道關於PHP網頁刮板的問題已被問及時間和使用這個,我發現了SimpleHTMLDOM。在我的本地服務器上無縫工作之後,我將所有內容都上傳到了我的在線服務器上,以便找出某些問題無法解決。快速瀏覽常見問題解答後,我會轉到this。我目前正在使用免費託管服務,因此請編輯任何php.ini設置。所以使用FAQ的建議,我嘗試使用cURL,只是發現這也是由我的託管服務關閉。是否還有其他簡單的解決方案可以在不使用cURL或SimpleHTMLDOM的情況下刪除另一個網頁的內容?當cURL和allow_url_fopen被禁用時如何抓取網站

回答

4

如果cURLallow_url_fopen沒有啓用,你可以嘗試獲取通過內容

  • fsockopen - 打開Internet或Unix域套接字連接

換句話說,你所要做的HTTP請求手動。請參閱手冊中的示例以瞭解如何執行GET請求。然後可以進一步處理返回的內容。如果套接字已啓用,您還可以使用任何第三方lib來利用它們,例如Zend_Http_Client

在旁註中,查看Best Methods to Parse HTML以獲得SimpleHTMLDom的替代方案。

+2

+1不知道你可以使用fsockopen,即使allow_url_fopen是不允許的。 – NikiC 2010-10-20 18:18:18

1

cURL是一種專業API。它不是通常製作的http庫,而是FTP,SFTP,SCP,HTTP PUT,SMTP,TELNET等通用數據傳輸庫。如果您只想使用HTTP,則有一個根據PEAR library for that。或者檢查您的PHP版本是否啓用了官方http extension。 刮刮試phpQueryquerypath。兩者都帶有內置http支持。

+0

我認爲querypath使用DOM的加載工具和afaik,它們依賴於'allow_url_fopen'。另一方面,phpquery使用'Zend_Http_Client',這可能是一個選項。 PEAR圖書館也是一個很好的電話。這是'fsockopen'上的一個實現。 – Gordon 2010-10-07 11:01:39

-4

file_get_contents()是在不安裝額外庫的情況下抓取頁面的最簡單方法。

+0

這就是[與Martin的上述相同的答案](http://stackoverflow.com/questions/3880628/how-to-scrape-websites-when-curl-and-allow-url-fopen-is-disabled/3880979#3880979 )。除非你自己的答案增加了一些新的東西,否則鼓勵你提高原始答案而不是重複它們(特別是當它們不適用於OP的問題時)。 – Gordon 2010-10-08 17:42:36

+0

file_get_contents()不是一個選項。 – user 2010-10-09 17:38:11

0

下面是在allow_url_fopen設置爲false時抓取圖像的一種簡單方法,無需研究傳統工具。

在您的開發環境中創建一個網頁,加載您正在抓取的所有圖像。然後您可以使用瀏覽器保存圖像。 File -> "Save Page As"

如果您需要一次性解決方案從allow_url_fopen設置爲0的遠程服務器下載一堆圖像,這很方便。

這對我工作後file_get_contentscurl失敗。