使用phpQuery采集網(wǎng)頁的方法
更新時間:2013年11月13日 10:36:44 作者:
使用phpQuery輕松采集網(wǎng)頁內(nèi)容,像使用jQuery一樣處理頁面內(nèi)容
phpQuery是一個基于PHP的服務端開源項目,它可以讓PHP開發(fā)人員輕松處理DOM文檔內(nèi)容,比如獲取某新聞網(wǎng)站的頭條信息。更有意思的是,它采用了jQuery的思想,你可以像使用jQuery一樣處理頁面內(nèi)容,獲取你想要的頁面信息。
采集頭條
先看一實例,現(xiàn)在我要采集新浪網(wǎng)國內(nèi)新聞的頭條,代碼如下:
include 'phpQuery/phpQuery.php';
phpQuery::newDocumentFile('http://www.dbjr.com.cn');
echo pq(".blkTop h1:eq(0)")->html();
簡單的三行代碼,就可以獲取頭條內(nèi)容。首先在程序中包含phpQuery.php核心程序,然后調(diào)用讀取目標網(wǎng)頁,最后輸出對應標簽下的內(nèi)容。
pq()是一個功能強大的方法,跟jQuery的$()如出一轍,jQuery的選擇器基本上都能使用在phpQuery上,只要把“.”變成“->”。如上例中,pq(“.blkTop h1:eq(0)”)抓取了頁面class屬性為blkTop的DIV元素,并找到該DIV內(nèi)部的第一個h1標簽,然后用html()方法獲取h1標簽里的內(nèi)容(帶html標簽),也就是我們要獲取的頭條信息,如果使用text()方法,則只獲取頭條的文本內(nèi)容。當然要使用好phpQuery,關(guān)鍵是要找對文檔中對應內(nèi)容的節(jié)點。
采集文章列表
下面再來看一個例子,獲取helloweba.com網(wǎng)站的blog列表,請看代碼:
include 'phpQuery/phpQuery.php';
phpQuery::newDocumentFile('http://www.dbjr.com.cn');
$artlist = pq(".blog_li");
foreach($artlist as $li){
echo pq($li)->find('h2')->html()."";
}
通過循環(huán)列表中的DIV,找出文章標題并輸出,就是這么簡單。
解析XML文檔
假設(shè)現(xiàn)在有一個這樣的test.xml文檔:
<?xml version="1.0" encoding="utf-8"?>
<root>
<contact>
<name>張三</name>
<age>22</age>
</contact>
<contact>
<name>王五</name>
<age>18</age>
</contact>
</root>
現(xiàn)在我要獲取名字為張三的聯(lián)系人的年齡,代碼如下:
include 'phpQuery/phpQuery.php';
phpQuery::newDocumentFile('test.xml');
echo pq('contact > age:eq(0)');
結(jié)果輸出:22
像jQuery一樣,精準查找文檔節(jié)點,輸出節(jié)點下的內(nèi)容,解析一個XML文檔就是這么簡單?,F(xiàn)在你不必為采集網(wǎng)站內(nèi)容而使用那些頭疼的正則算法、內(nèi)容替換等繁瑣的代碼了,有了phpQuery,一切就變得輕松多了。
phpquery項目官網(wǎng)地址:http://code.google.com/p/phpquery/
采集頭條
先看一實例,現(xiàn)在我要采集新浪網(wǎng)國內(nèi)新聞的頭條,代碼如下:
復制代碼 代碼如下:
include 'phpQuery/phpQuery.php';
phpQuery::newDocumentFile('http://www.dbjr.com.cn');
echo pq(".blkTop h1:eq(0)")->html();
簡單的三行代碼,就可以獲取頭條內(nèi)容。首先在程序中包含phpQuery.php核心程序,然后調(diào)用讀取目標網(wǎng)頁,最后輸出對應標簽下的內(nèi)容。
pq()是一個功能強大的方法,跟jQuery的$()如出一轍,jQuery的選擇器基本上都能使用在phpQuery上,只要把“.”變成“->”。如上例中,pq(“.blkTop h1:eq(0)”)抓取了頁面class屬性為blkTop的DIV元素,并找到該DIV內(nèi)部的第一個h1標簽,然后用html()方法獲取h1標簽里的內(nèi)容(帶html標簽),也就是我們要獲取的頭條信息,如果使用text()方法,則只獲取頭條的文本內(nèi)容。當然要使用好phpQuery,關(guān)鍵是要找對文檔中對應內(nèi)容的節(jié)點。
采集文章列表
下面再來看一個例子,獲取helloweba.com網(wǎng)站的blog列表,請看代碼:
復制代碼 代碼如下:
include 'phpQuery/phpQuery.php';
phpQuery::newDocumentFile('http://www.dbjr.com.cn');
$artlist = pq(".blog_li");
foreach($artlist as $li){
echo pq($li)->find('h2')->html()."";
}
通過循環(huán)列表中的DIV,找出文章標題并輸出,就是這么簡單。
解析XML文檔
假設(shè)現(xiàn)在有一個這樣的test.xml文檔:
復制代碼 代碼如下:
<?xml version="1.0" encoding="utf-8"?>
<root>
<contact>
<name>張三</name>
<age>22</age>
</contact>
<contact>
<name>王五</name>
<age>18</age>
</contact>
</root>
現(xiàn)在我要獲取名字為張三的聯(lián)系人的年齡,代碼如下:
復制代碼 代碼如下:
include 'phpQuery/phpQuery.php';
phpQuery::newDocumentFile('test.xml');
echo pq('contact > age:eq(0)');
結(jié)果輸出:22
像jQuery一樣,精準查找文檔節(jié)點,輸出節(jié)點下的內(nèi)容,解析一個XML文檔就是這么簡單?,F(xiàn)在你不必為采集網(wǎng)站內(nèi)容而使用那些頭疼的正則算法、內(nèi)容替換等繁瑣的代碼了,有了phpQuery,一切就變得輕松多了。
phpquery項目官網(wǎng)地址:http://code.google.com/p/phpquery/
相關(guān)文章
PHP實現(xiàn)的無限分類類庫定義與用法示例【基于thinkPHP】
這篇文章主要介紹了PHP實現(xiàn)的無限分類類庫定義與用法,結(jié)合實例形式分析了基于thinkPHP實現(xiàn)的無限分類類庫相關(guān)定義及具體使用操作技巧,需要的朋友可以參考下2018-08-08php實現(xiàn)可用于mysql,mssql,pg數(shù)據(jù)庫操作類
這篇文章主要介紹了php實現(xiàn)可用于mysql,mssql,pg數(shù)據(jù)庫操作類,以類的形式封裝了對mysql,mssql,pg三種數(shù)據(jù)庫的操作,非常具有實用價值,需要的朋友可以參考下2014-12-12PHP調(diào)用存儲過程返回值不一致問題的解決方法分析
這篇文章主要介紹了PHP調(diào)用存儲過程返回值不一致問題的解決方法,結(jié)合實例形式分析了存儲過程調(diào)用返回值不一致的原因與解決方法,需要的朋友可以參考下2016-04-04php dirname(__FILE__) 獲取當前文件的絕對路徑
dirname(__FILE__) 取到的是當前文件的絕對路徑,也就是說,比起相對路徑,查找速度是最快的。2011-06-06PHP實現(xiàn)的各種進制相互轉(zhuǎn)換功能小工具示例
這篇文章主要介紹了PHP實現(xiàn)的各種進制相互轉(zhuǎn)換功能小工具,涉及php常見的二進制、八進制、十六進制等相互轉(zhuǎn)換操作實現(xiàn)技巧,需要的朋友可以參考下2018-03-03PHP中foreach循環(huán)中使用引用要注意的地方
發(fā)現(xiàn)了一個容易出錯,但是不懂得原理卻解釋不明白的問題,碰到類似問題的朋友可以參考下。2011-01-01使用PHP連接多種數(shù)據(jù)庫的實現(xiàn)代碼(mysql,access,sqlserver,Oracle)
我們今天為大家介紹的PHP連接數(shù)據(jù)庫的方法包括在MYSQL數(shù)據(jù)庫、ACCESS數(shù)據(jù)庫、MS SQL數(shù)據(jù)庫和Oracle數(shù)據(jù)庫中實現(xiàn)2016-12-12