当前位置:Gxlcms > PHP教程 > php抓取网页内容与图片的方法

php抓取网页内容与图片的方法

时间:2021-07-01 10:21:17 帮助过:4人阅读

这篇文章主要介绍了关于php 抓取网页内容与图片的方法,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

例子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('&amp;','&',$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;
}
?>

以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!

相关推荐:

php打包zip图片下载的方法

php web请求安全处理

以上就是php 抓取网页内容与图片的方法的详细内容,更多请关注Gxl网其它相关文章!

人气教程排行