Re: Snoopy功能强大的模拟浏览器方法的PHP类
用Snoopy类完成一个简单的图片采集:
[code]<meta http-equiv='content-type' content='text/html;charset=utf-8'>
<?php
include 'Snoopy.class.php'; //加载Snoopy类
$snoopy = new Snoopy(); //实例化一个对象
$sourceURL = "http://www.nowamagic.net/librarys/veda/"; //要抓取的网页
$snoopy->fetchlinks($sourceURL); //获得网页的链接
$a = $snoopy->results; //得到网页链接的结果
$re = "/d+.html$/"; //匹配的正则
//过滤获取指定的文件地址请求
foreach ($a as $tmp) {
if (preg_match($re, $tmp)) {
$aa=$tmp;
}
}
getImgURL($aa);
function getImgURL($siteName){
$snoopy = new Snoopy();
$snoopy->fetch($siteName);
$fileContent = $snoopy->results; //获取过滤后的页面的内容
//匹配图片的正则表达式
$reTag = "/<img[^s]+src="(http://[^"]+).(jpg|png|gif|jpeg)"[^/]*/>/i";
if (preg_match($reTag, $fileContent)) {
//过滤图片
$ret = preg_match_all($reTag, $fileContent, $matchResult);
for ($i = 0, $len = count($matchResult[1]); $i < $len; ++$i){
saveImgURL($matchResult[1][$i], $matchResult[2][$i]);
}
}
}
function saveImgURL($name, $suffix){
$url = $name.".".$suffix;
echo "请求的图片地址:".$url."<br/>";
$imgSavePath = "E:/123/images/"; //图片保存地址
$imgId =mt_rand(); //产生一个随机的文件名
if ($suffix == "gif") {
//根据图片类型,放入不同的文件夹下面
$imgSavePath .= "emotion";
}else{
$imgSavePath .= "topic";
}
$imgSavePath .= ("/".$imgId.".".$suffix); //组装要保存的文件名
if (is_file($imgSavePath)) {
//判断文件名是否存在,存在则删除
unlink($imgSavePath);
echo "<p style='color:#f00;'>文件".$imgSavePath."已存在,将被删除</p>";
}
$imgFile = file_get_contents($url); //读取网络文件
$flag = file_put_contents($imgSavePath,$imgFile); //写入到本地
if ($flag) {
echo "<p>文件".$imgSavePath."保存成功</p>";
}
}[/code]
相关链接
官方网站:http://snoopy.sourceforge.net/
下载地址:http://sourceforge.net/projects/snoopy/
Github地址:https://github.com/uedsc/Snoopy