施用php發送Http請求,抓取網頁資料

來源:互聯網
上載者:User
使用php發送Http請求,抓取網頁資料

做過j2ee 或android開發的童鞋,應該或多或少都使用過Apeache的HttpClient類庫吧。這個類庫給我們提供了十分強大的服務端Http請求操作。在開發中使用起來十分的方便。

最近做php的開發,也有需要在服務端發送http請求,然後處理返回到用戶端,如果用socket來做,未必又太麻煩了,心想這看看php中有沒有類似HttpClient這樣的類庫。

Google了一下,發現php中還真有這麼一個類庫,而且名字就叫做httpclient,相當的激動啊,到官網一看,發現已經好多年都沒更新過了,而且功能貌似也有限,大失所望啊。接著我找到了另外一個類庫Snoopy,對於這個類庫我也不瞭解,不過看網上的響應還不錯,於是決定就用他了。他的API使用和Apeache的HttpClient差別很大,但是還是十分容易使用。而且提供了許多特殊用途的方法,比如可以只抓去頁面中的form表單,或者所有的連結等等。

include 'Snoopy.class.php';$snoopy = new Snoopy();$snoopy->fetch("http://www.baidu.com");echo $snoopy->results;

上面這幾句代碼,就可以很輕鬆的將百度的頁面抓取過來。

當然在需要發送post表單時,可以使用submit方法來提交資料。

同時他還通過了要求標頭,相應頭以及Cookie的相關操作函數,十分的強大。

include "Snoopy.class.php";$snoopy = new Snoopy();$snoopy->proxy_host = "http://www.baidu.cn";$snoopy->proxy_port = "80";$snoopy->agent = "(compatible; MSIE 4.01; MSN 2.5; AOL 4.0; Windows 98)";$snoopy->referer = "http://www.4wei.cn"; $snoopy->cookies["SessionID"] = '238472834723489';$snoopy->cookies["favoriteColor"] = "RED";$snoopy->rawheaders["Pragma"] = "no-cache";$snoopy->maxredirs = 2;$snoopy->offsiteok = false;$snoopy->expandlinks = false;$snoopy->user = "joe";$snoopy->pass = "bloe";if($snoopy->fetchtext("http://www.baidu.cn")) {echo "
" . htmlspecialchars($snoopy->results) . "
\n";} else {echo "error fetching document: " . $snoopy->error . "\n";}
更多的操作方法,可以去Snoopy的官方查看文檔,或者是直接查看原始碼。

到這裡,snoopy也僅僅是把頁面抓取回來,如果要對抓取回來的頁面進行資料提取,那麼它就幫不上什麼忙了。這裡我又找到了另外一個php解析html的好工具:phpQuery,它提供的操作方法和jquery幾乎一模一樣,而且提供了一些php的特性,熟悉jquery的童鞋,用phpquery應該是相當的順手啊,甚至phpQuery的文檔都不需要了..

使用Snoopy+PhpQuery可以很方便的實現網頁的抓取和資料解析,十分有用啊,我也是最近有這方面的需要,才發現了這兩個不錯的類庫啊,原來很多java可以做的事情,php也能做哦。

有興趣的同學,也可以試試用他們來做個簡易的網頁爬蟲哦。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.