Heim > Backend-Entwicklung > PHP-Tutorial > So crawlen Sie Webinhalte und Bilder in PHP

So crawlen Sie Webinhalte und Bilder in PHP

不言
Freigeben: 2023-04-02 15:02:02
Original
3646 Leute haben es durchsucht

Dieser Artikel stellt hauptsächlich die Methode zum Crawlen von Webinhalten und Bildern mit PHP vor. Jetzt kann ich ihn mit Ihnen teilen

Beispiel 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 />";  
 }
 
?>
Nach dem Login kopieren

Beispiel 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;
}
?>
Nach dem Login kopieren

Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass er für das Lernen aller hilfreich ist. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website !

Verwandte Empfehlungen:

So laden Sie in PHP verpackte Zip-Bilder herunter

Sichere Verarbeitung von PHP-Webanfragen

Das obige ist der detaillierte Inhalt vonSo crawlen Sie Webinhalte und Bilder in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage