PHP采集程序常用的采集函数

这几天关注了一下PHP的采集程序,才发现用PHP采集内容是这么方便,把经常用到的采集函数在这里总结一下,方便以后使用!

获取所有链接内容和地址

function getAllURL($code){
preg_match_all('/<a\s+href=["|\']?([^>"\' ]+)["|\']?\s*[^>]*>([^>]+)<\/a>/i',$code,$arr);
return array('name'=>$arr[2],'url'=>$arr[1]);
}

获取所有的图片地址

function getImgSrc($code){
$reg = "/]*src=\"(http:\/\/(.+)\/(.+)\.(jpg|gif|bmp|bnp|png))\"/isU";
preg_match_all($reg, $code, $img_array, PREG_PATTERN_ORDER);
return $img_array[1];
}

当前的脚本网址

function getSelfURL(){
if(!empty($_SERVER["REQUEST_URI"])){
$scriptName = $_SERVER["REQUEST_URI"];
$nowurl = $scriptName;
}else{
$scriptName = $_SERVER["PHP_SELF"];
if(empty($_SERVER["QUERY_STRING"])) $nowurl = $scriptName;
else $nowurl = $scriptName."?".$_SERVER["QUERY_STRING"];
}
return $nowurl;
}

继续阅读

获取网页内的图片地址 | 打包下载图片

最近开发了一个在线的采集工具,可以根据URL来获取当前页面里的图片信息,比如说图片地址,图片标签里的属性,以及通过打包(zip)的形式下载请求页面中获取到的图片。有兴趣的朋友可以查看一下下面的DEMO页面,来进行采集图片:

http://www.ityizhan.com/demo/download-image/

这个DEMO页面只是实现了最基本的两个部分:采集地址和打包下载。目前尚在测试阶段,还在进行的更新,希望大家发现问题能及时反馈,成为大家采集图片的方便工具。

根据不断的测试,以后还可能增加的新功能有,自动调整图片的大小,设置打包图片的名称规则,合并和分解图片。。。。反正想添加的功能挺多的,有什么好的建议也希望大家能留言。

下面说一下这个工具现有功能的实现方法:

1. 获取地址

这个功能最主要的就是用正则表达式来匹配页面源码里的图片地址了,这里用到得正则表达式是:

/<img.*src="(.*)"\\s*.*>/iU

首页通过PHP自带的读取文件函数来获得请求页面的html代码,然后用正则表达式来匹配里面的src地址,这里有两个注意点:

  • file_get_content 只能获取到静态的页面内容,也就是说如果你在页面里看到的是图片是通过Javascript来展示的,通过这个工具是获取不到图片信息的
  • 有的网站对file_get_content 这个函数做了些限制,如果不是通过浏览器打开的网页,服务器是拒绝请求的,这个时候我们就需要给php 程序添加一个配置信息,让采集的程序能够模拟一个留言器的UA(user agent),具体的做法可以通过下面的代码来实现://现在模拟的是一个Window 环境下的浏览器
    ini_set('user_agent','Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; 4399Box.560; .NET4.0C; .NET4.0E)');

继续阅读