This article mainly introduces the method of crawling web content and images with PHP. It has certain reference value. Now I share it with you. Friends in need can refer to it.
Example 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 />"; } ?>
Example 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; } ?>
The above is the entire content of this article. I hope it will be helpful to everyone’s learning. For more related content, please pay attention to the PHP Chinese website!
Related recommendations:
How to package zip image downloads in php
php web request security processing
The above is the detailed content of How to crawl web content and images in php. For more information, please follow other related articles on the PHP Chinese website!