例子1:
<?php
include_once("curl.php");/*这个文件要自己配置好*/
header("content-type:text/html;charset=utf8");
$pattern_title ="/<title>(.+)<//title>/";//标题匹配
$pattern_code = "/<tr><td><p>(.+)<//p><script/";//网页内容匹配
$url="http://www.freewl.com/freezcm/2011/0413/3185.html";//根网址
$DATA_CONTENT = CurlGet($url);
$num=preg_match_all($pattern_title, $DATA_CONTENT, $match_title);
for($i=0;$i<$num;$i++){
echo strlen($match_title[1][$i])."--".$match_title[1][$i]."<br />";
}
echo "<hr />";
/*$trans = array(" "=>",", "<br />"=>"。");
$TRANS_CONTENT = strtr($DATA_CONTENT, $trans);
echo $TRANS_CONTENT;
*/
$DATA_CONTENT=preg_replace('//s(?=/s)/', ' ', $DATA_CONTENT);//(?=pattern) 正向预查
$DATA_CONTENT=preg_replace('/[/n/r/t]/', '/r/n', $DATA_CONTENT);//回车换行
$DATA_CONTENT=preg_replace('/ /', ' ', $DATA_CONTENT);
$num=preg_match_all($pattern_code, $DATA_CONTENT, $match_code);
for($i=0;$i<$num;$i++){
echo $match_code[1][$i]."<br />";
}
?>
例子2:
<?php
/*
author: ssh_kobe
date: 20110615
*/
set_time_limit(0);//抓取不受时间限制
function get_pic($pic_url) {
//获取图片二进制流
$data=CurlGet($pic_url);
/*利用正则表达式得到图片链接
$pattern_src = '/<img.*?\"([^\"]*(jpg|bmp|jpeg|gif)).*?>/';*/
$pattern_src = '/<img.*?src\=\"(.*\.jpg).*?>/';//只匹配jpg格式的图片
$num = preg_match_all($pattern_src, $data, $match_src);
$arr_src=$match_src[1];//获得图片数组
//get_name($arr_src);
get_name_2($arr_src);
echo 'End!!!<br>';
return 0;
}
function get_pic_2($pic_url, $base_site) {
//获取图片二进制流
$data=CurlGet($pic_url);
/*利用正则表达式得到图片链接*/
$pattern_src = '/<img.*?\"([^\"]*jpg).*?>/';//只匹配jpg格式的图片
$num = preg_match_all($pattern_src, $data, $match_src);
$arr_src=$match_src[1];//获得图片数组
$arr_src=rev_site($arr_src, $base_site);
get_name($arr_src);
echo 'End!!!<br>';
return 0;
}
/* 将图片相对地址改为绝对地址 */
function rev_site($site_list, $base_site){
foreach($site_list as $site_item) {
if (preg_match('/^http/', $site_item)) {
$return_list[] = $site_item;
}else{
$return_list[] = $base_site.$site_item;
}
}
return $return_list;
}
/*得到图片类型,并将其保存到与该文件同一目录*/
function get_name($pic_arr)
{
//图片类型
$pattern_type = '/(\.(jpg|bmp|jpeg|gif|png))/';
foreach($pic_arr as $pic_item){//循环取出每幅图的地址
$num = preg_match_all($pattern_type,$pic_item,$match_type);
$pic_name = get_unique().$match_type[1][0];//改时微秒时间戳命名
//以流的形式保存图片
$write_fd = @fopen($pic_name,"wb");
@fwrite($write_fd, CurlGet($pic_item));
@fclose($write_fd);
echo "OK..";
}
return 0;
}
function get_name_2($pic_arr)
{
//图片编号和类型
$pattern_type = '/.*\/(.*?)$/';
foreach($pic_arr as $pic_item){//循环取出每幅图的地址
$num = preg_match_all($pattern_type,$pic_item,$match_type);
//以流的形式保存图片
$write_fd = @fopen($match_type[1][0],"wb");
@fwrite($write_fd, CurlGet($pic_item));
@fclose($write_fd);
echo 'OK..';
}
return 0;
}
//通过微秒时间获得唯一ID
function get_unique(){
list($msec, $sec) = explode(" ",microtime());
return $sec.intval($msec*1000000);
}
//抓取网页内容
function CurlGet($url){
$url=str_replace('&','&',$url);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HEADER, false);
//curl_setopt($curl, CURLOPT_REFERER,$url);
curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; SeaPort/1.2; Windows NT 5.1; SV1; InfoPath.2)");
curl_setopt($curl, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($curl, CURLOPT_COOKIEFILE, 'cookie.txt');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 0);
$values = curl_exec($curl);
curl_close($curl);
return $values;
}
?>