Rumah >pembangunan bahagian belakang >tutorial php >php 抓取网页内容与图片的方法

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

不言
不言asal
2018-07-05 15:50:333641semak imbas

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

例子1:

ac2edc09ec36fe132332cb65d7aaf491(.+)69c2ff15addb645349c29fa5996fd30b/";//标题匹配
  $pattern_code = "/a34de1251f0d9fe1e645927f19a896e8b6c5a531a458a2e790c1fd6421739d1ce388a4556c0f65e1904146cc1a846bee(.+)164e5b534ac230270e015aa6a78ab0350d5ec65b65dab1e9312776afc9e036c9";
 }
 echo "cdcaaee4c9b94464012808ae8e1b67a4";
 
 /*$trans = array("  "=>",", "ff9d32c555bb1d9133a29eb4371c1213"=>"。");
 $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]."ff9d32c555bb1d9133a29eb4371c1213";  
 }
 
?>

例子2:

 <?php
/*
author: ssh_kobe
date: 20110615
*/
set_time_limit(0);//抓取不受时间限制
function get_pic($pic_url) {
//获取图片二进制流
$data=CurlGet($pic_url);
/*利用正则表达式得到图片链接
$pattern_src = &#39;/<img.*?\"([^\"]*(jpg|bmp|jpeg|gif)).*?>/&#39;;*/
$pattern_src = &#39;/<img.*?src\=\"(.*\.jpg).*?>/&#39;;//只匹配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 &#39;End!!!<br>&#39;;
return 0;
}
function get_pic_2($pic_url, $base_site) {
//获取图片二进制流
$data=CurlGet($pic_url);
/*利用正则表达式得到图片链接*/
$pattern_src = &#39;/<img.*?\"([^\"]*jpg).*?>/&#39;;//只匹配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 &#39;End!!!<br>&#39;;
return 0;
}
/* 将图片相对地址改为绝对地址 */
function rev_site($site_list, $base_site){
    foreach($site_list as $site_item) {
        if (preg_match(&#39;/^http/&#39;, $site_item)) {
            $return_list[] = $site_item;
        }else{
            $return_list[] = $base_site.$site_item;
}
    }
    return $return_list;
}
/*得到图片类型,并将其保存到与该文件同一目录*/
function get_name($pic_arr)
{
    //图片类型
$pattern_type = &#39;/(\.(jpg|bmp|jpeg|gif|png))/&#39;;    
    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 = &#39;/.*\/(.*?)$/&#39;;    
    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 &#39;OK..&#39;;
    }
    return 0;
}
//通过微秒时间获得唯一ID
function get_unique(){
list($msec, $sec) = explode(" ",microtime());
return $sec.intval($msec*1000000);
}
//抓取网页内容
function CurlGet($url){ 
$url=str_replace(&#39;&amp;&#39;,&#39;&&#39;,$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, &#39;cookie.txt&#39;);
curl_setopt($curl, CURLOPT_COOKIEFILE, &#39;cookie.txt&#39;);
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请求安全处理

Atas ialah kandungan terperinci php 抓取网页内容与图片的方法. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:php打包zip图片下载的方法Artikel seterusnya:PHP导入进度条类