Re: Snoopy功能强大的模拟浏览器方法的PHP类

添加时间:17-06-30 所属分类: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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

前篇:退休教师夫妇为贫困孩子免费补课23年 还自费... 后篇:Snoopy 用来模仿web浏览器的功能,它能完成...
发表我的评论


推荐文章   707分考入北大,她的这篇文章看哭所有人   《给女儿的一封信》   夏季热门中药花茶组方搭配   “儿子,千万别把老婆当亲人!”爸爸的...   高温来袭去哪儿避暑? 六处人防纳凉点成...
随机文章   PHP使用 $_GET获取传递值为空时的处理代...   编程从业五年的十四条经验   使用JSON实现数据的跨域调用   php不错的验证码   PHP上传文件代码,仅适合初学者,代码简洁...
广告

其他推荐

因为本站所有内容均转载自其它媒体,本意为公众提供免费服务,但并不代表本网赞同其观点,也不能对其真实性验证负责,如稿件版权单位或个人不想在本网发布,请与我联系,本人会立即将其撤除,谢谢.联系方式:atseashawk@163.com QQ:99289555