使用phpQuery采集網(wǎng)頁的方法
采集頭條
先看一實(shí)例,現(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)用讀取目標(biāo)網(wǎng)頁,最后輸出對應(yīng)標(biāo)簽下的內(nèi)容。
pq()是一個(gè)功能強(qiáng)大的方法,跟jQuery的$()如出一轍,jQuery的選擇器基本上都能使用在phpQuery上,只要把“.”變成“->”。如上例中,pq(“.blkTop h1:eq(0)”)抓取了頁面class屬性為blkTop的DIV元素,并找到該DIV內(nèi)部的第一個(gè)h1標(biāo)簽,然后用html()方法獲取h1標(biāo)簽里的內(nèi)容(帶html標(biāo)簽),也就是我們要獲取的頭條信息,如果使用text()方法,則只獲取頭條的文本內(nèi)容。當(dāng)然要使用好phpQuery,關(guān)鍵是要找對文檔中對應(yīng)內(nèi)容的節(jié)點(diǎn)。
采集文章列表
下面再來看一個(gè)例子,獲取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,找出文章標(biāo)題并輸出,就是這么簡單。
解析XML文檔
假設(shè)現(xiàn)在有一個(gè)這樣的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一樣,精準(zhǔn)查找文檔節(jié)點(diǎn),輸出節(jié)點(diǎn)下的內(nèi)容,解析一個(gè)XML文檔就是這么簡單。現(xiàn)在你不必為采集網(wǎng)站內(nèi)容而使用那些頭疼的正則算法、內(nèi)容替換等繁瑣的代碼了,有了phpQuery,一切就變得輕松多了。
phpquery項(xiàng)目官網(wǎng)地址:http://code.google.com/p/phpquery/
相關(guān)文章
php文件后綴不強(qiáng)制為.php的實(shí)操方法
在本篇文章里小編給大家整理的是一篇關(guān)于php文件后綴不強(qiáng)制為.php的實(shí)操方法,有需要的朋友們參考下。2019-09-09PHP實(shí)現(xiàn)的無限分類類庫定義與用法示例【基于thinkPHP】
這篇文章主要介紹了PHP實(shí)現(xiàn)的無限分類類庫定義與用法,結(jié)合實(shí)例形式分析了基于thinkPHP實(shí)現(xiàn)的無限分類類庫相關(guān)定義及具體使用操作技巧,需要的朋友可以參考下2018-08-08php實(shí)現(xiàn)可用于mysql,mssql,pg數(shù)據(jù)庫操作類
這篇文章主要介紹了php實(shí)現(xiàn)可用于mysql,mssql,pg數(shù)據(jù)庫操作類,以類的形式封裝了對mysql,mssql,pg三種數(shù)據(jù)庫的操作,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2014-12-12PHP調(diào)用存儲(chǔ)過程返回值不一致問題的解決方法分析
這篇文章主要介紹了PHP調(diào)用存儲(chǔ)過程返回值不一致問題的解決方法,結(jié)合實(shí)例形式分析了存儲(chǔ)過程調(diào)用返回值不一致的原因與解決方法,需要的朋友可以參考下2016-04-04php dirname(__FILE__) 獲取當(dāng)前文件的絕對路徑
dirname(__FILE__) 取到的是當(dāng)前文件的絕對路徑,也就是說,比起相對路徑,查找速度是最快的。2011-06-06PHP實(shí)現(xiàn)的各種進(jìn)制相互轉(zhuǎn)換功能小工具示例
這篇文章主要介紹了PHP實(shí)現(xiàn)的各種進(jìn)制相互轉(zhuǎn)換功能小工具,涉及php常見的二進(jìn)制、八進(jìn)制、十六進(jìn)制等相互轉(zhuǎn)換操作實(shí)現(xiàn)技巧,需要的朋友可以參考下2018-03-03php設(shè)計(jì)模式 Template (模板模式)
定義一個(gè)操作中的算法骨架,而將一些步驟延遲到子類中,使得子類可以不改變一個(gè)算法的結(jié)構(gòu)可以定義該算法的某些特定步驟2011-06-06PHP中foreach循環(huán)中使用引用要注意的地方
發(fā)現(xiàn)了一個(gè)容易出錯(cuò),但是不懂得原理卻解釋不明白的問題,碰到類似問題的朋友可以參考下。2011-01-01使用PHP連接多種數(shù)據(jù)庫的實(shí)現(xiàn)代碼(mysql,access,sqlserver,Oracle)
我們今天為大家介紹的PHP連接數(shù)據(jù)庫的方法包括在MYSQL數(shù)據(jù)庫、ACCESS數(shù)據(jù)庫、MS SQL數(shù)據(jù)庫和Oracle數(shù)據(jù)庫中實(shí)現(xiàn)2016-12-12