PHP에서 웹 콘텐츠와 이미지를 크롤링하는 방법

不言
풀어 주다: 2023-04-02 15:02:02
원래의
3548명이 탐색했습니다.

이 글은 주로 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 = &#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 웹 요청 보안 처리

위 내용은 PHP에서 웹 콘텐츠와 이미지를 크롤링하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!