$str?=?'li?class="blackArea"?data-sourcelatest-elem="item"?data-tvid="694641300"?data-vid="7b0b59d2ef0cb1152368ca9be9a4ae76"?data-idx="4"?data-sourcelatest-month=""?data-delegate="videoPlayList"
創(chuàng)新互聯(lián)公司是一家專(zhuān)業(yè)的成都網(wǎng)站建設(shè)公司,我們專(zhuān)注網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、網(wǎng)絡(luò)營(yíng)銷(xiāo)、企業(yè)網(wǎng)站建設(shè),外鏈,一元廣告為企業(yè)客戶(hù)提供一站式建站解決方案,能帶給客戶(hù)新的互聯(lián)網(wǎng)理念。從網(wǎng)站結(jié)構(gòu)的規(guī)劃UI設(shè)計(jì)到用戶(hù)體驗(yàn)提高,創(chuàng)新互聯(lián)力求做到盡善盡美。
p?class="video_position?video_rb"span?class="v_name"?rseat="xj_ty3"第2017-06-08期/span/p
h3?a?title="微體兔新版饞嘴小面"?href="javascript:void(0);"?rseat="xj_vn3"微體兔新版饞嘴小面/a?/h3
/li';
$pattern?=?"/[\s\S]*li[^]+data-tvid[=\"\']+([^\"\']*)[\"\'][^]*data-vid[=\"\']+([^\"\']*)[\"\'][\s\S]*/i";
$tvid?=?preg_replace($pattern,?"$1",?$str);
$vid?=?preg_replace($pattern,?"$2",?$str);
$reg?=?"/[\s\S]*p[^]*((?:(?!\/p)[\s\S])*)\/p[\s\S]*/i";
$p?=?preg_replace($reg,?"$1",?$str);
$reg?=?"/[\s\S]*h3[^]*((?:(?!\/h3)[\s\S])*)\/h3[\s\S]*/i";
$h3?=?preg_replace($reg,?"$1",?$str);
echo?$tvid."\n".$vid."\n".$p."\n".$h3;
我寫(xiě)好了,用Dreamweaver調(diào)試過(guò),可以匹配。
先用下面正則提取需要的代碼段:
Draw?Result.+?(\d{1,2})/td.+?(\d{1,2})/td.+?(\d{1,2})/td.+?(\d{1,2})/td.+?(\d{1,2})/td.+?(\d{1,2})/td
再用正則替換,把該內(nèi)容中除了數(shù)字以外的代碼去除:
替換成$1,$2,$3,$4,$5,$6 即可得到 4,7,8,33,36,43
可以參考以下幾種方法:
方法一: file_get_contents獲取
span style="white-space:pre"?/span$url="";
span style="white-space:pre"?/span$fh= file_get_contents
('');span style="white-space:pre"?/spanecho $fh;
方法二:使用fopen獲取網(wǎng)頁(yè)源代碼
span style="white-space:pre"?/span$url="";
span style="white-space:pre"?/span$handle = fopen ($url, "rb");
span style="white-space:pre"?/span$contents = "";
span style="white-space:pre"?/spanwhile (!feof($handle)) {
span style="white-space:pre"??/span$contents .= fread($handle, 8192);
span style="white-space:pre"?/span}
span style="white-space:pre"?/spanfclose($handle);
span style="white-space:pre"?/spanecho $contents; //輸出獲取到得內(nèi)容。
方法三:使用CURL獲取網(wǎng)頁(yè)源代碼
$url="";
$UserAgent = 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; .NET CLR 3.5.21022; .NET CLR 1.0.3705; .NET CLR 1.1.4322)';
$curl = curl_init();?//創(chuàng)建一個(gè)新的CURL資源
curl_setopt($curl, CURLOPT_URL, $url);?//設(shè)置URL和相應(yīng)的選項(xiàng)
curl_setopt($curl, CURLOPT_HEADER, 0);? //0表示不輸出Header,1表示輸出
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);?//設(shè)定是否顯示頭信息,1顯示,0不顯示。//如果成功只將結(jié)果返回,不自動(dòng)輸出任何內(nèi)容。如果失敗返回FALSE
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_ENCODING, '');?//設(shè)置編碼格式,為空表示支持所有格式的編碼
//header中“Accept-Encoding: ”部分的內(nèi)容,支持的編碼格式為:"identity","deflate","gzip"。
curl_setopt($curl, CURLOPT_USERAGENT, $UserAgent);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
//設(shè)置這個(gè)選項(xiàng)為一個(gè)非零值(象 “Location: “)的頭,服務(wù)器會(huì)把它當(dāng)做HTTP頭的一部分發(fā)送(注意這是遞歸的,PHP將發(fā)送形如 “Location: “的頭)。
$data = curl_exec($curl);
echo $data;
//echo curl_errno($curl); //返回0時(shí)表示程序執(zhí)行成功
curl_close($curl);?//關(guān)閉cURL資源,并釋放系統(tǒng)資源
拓展資料
PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本預(yù)處理器”)是一種通用開(kāi)源腳本語(yǔ)言。語(yǔ)法吸收了C語(yǔ)言、Java和Perl的特點(diǎn),利于學(xué)習(xí),使用廣泛,主要適用于Web開(kāi)發(fā)領(lǐng)域。PHP 獨(dú)特的語(yǔ)法混合了C、Java、Perl以及PHP自創(chuàng)的語(yǔ)法。它可以比CGI或者Perl更快速地執(zhí)行動(dòng)態(tài)網(wǎng)頁(yè)。
用PHP做出的動(dòng)態(tài)頁(yè)面與其他的編程語(yǔ)言相比,PHP是將程序嵌入到HTML(標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言下的一個(gè)應(yīng)用)文檔中去執(zhí)行,執(zhí)行效率比完全生成HTML標(biāo)記的CGI要高許多;PHP還可以執(zhí)行編譯后代碼,編譯可以達(dá)到加密和優(yōu)化代碼運(yùn)行,使代碼運(yùn)行更快。
參考資料:PHP(超文本預(yù)處理器)-百度百科
會(huì)用正則就會(huì)抓取。
不會(huì)正則,一時(shí)半會(huì)也教不錯(cuò)。
不過(guò),推薦你使用phpQuery這個(gè)框架,用jQuery的使用器來(lái)抓取數(shù)據(jù)。
如果你要div class="nav" monkey="nav"和div class="head-ad"之間的所有源碼,用 preg_match 就可以,不用preg_match_all ,如果你要里面的所有的 li/li標(biāo)簽中的內(nèi)容,可以用preg_match_all
//提取所有代碼
$pattern = '/div class="nav" monkey="nav"(.+?)div class="head-ad"/is';
preg_match($pattern, $string, $match);
//$match[0] 即為div class="nav" monkey="nav"和div class="head-ad"之間的所有源碼
echo $match[0];
//然后再提取li/li之間的內(nèi)容
$pattern = '/li.*?(.+?)\/li/is';
preg_match_all($pattern, $match[0], $results);
$new_arr=array_unique($results[0]);
foreach($new_arr as $kkk){
echo $kkk;
}