本文最后更新于 5815 天前,其中的信息可能已经有所发展或是发生改变。
作为一个资深并且专业的扒皮人员,在我从初三开始投入伟大的互联网中到现在积累了丰富的扒皮经验。我相信每个做web的程序员也都会有类似的经历。
在扒皮过程中,必不可少的需要下载样式文件中的图片。碰到比较庞大的样式文件,其中可能会有上百个需要下载的图片,那么使用下面这段小代码是最为合适的了。
<?php
/*
More & Original PHP Framwork
Copyright (c) 2007 - 2008 IsMole Inc.
Author: kimi
Documentation: 下载样式文件中的图片,Kimi专用扒皮工具
*/
//note 设置PHP超时时间
set_time_limit(0);
//note 取得样式文件内容
$styleFileContent = file_get_contents('images/style.css');
//note 匹配出需要下载的URL地址
preg_match_all("/url\((.*)\)/", $styleFileContent, $imagesURLArray);
//note 循环需要下载的地址,逐个下载
$imagesURLArray = array_unique($imagesURLArray[1]);
foreach($imagesURLArray as $imagesURL) {
file_put_contents(basename($imagesURL), file_get_contents($imagesURL));
}
最后预祝各位在扒皮的过程中,一扒到底!
扒皮
沙发
我都喜欢
@blankyao, 恩,我以后扒皮的任务都交给你了。
@kimi, 你的也可以回复了,帅!
我喜欢扒…
可喜可贺
顶一下~!板凳
Hack for CSS Sprite:
$imagesURLArray = array_unique($imagesURLArray[1]);
foreach($imagesURLArray as $imagesURL) {
file_put_contents(basename($imagesURL), file_get_contents($imagesURL));
}
@习明, good job 已经修正原文中代码
@kimi, 还有几个需要fix的:
1. 注释信息内的url应该干掉
2. 直接file_get_contents远程url时相对路径的问题
3. url中’ “应该干掉
目前想到这3个
请问这个东西怎么用呀?
@水皮, 用php命令行或者,web方式跑都可以的。不过如果文件很多的话,用命令行方式更好。
如果CSS文件中的图片路径是相对路径,此代码就失效了
好东西啊~
用firebug分析,
用另存为就可以保存背景图片嘛.
@qijun, 这个是批量下载的嘛~~
@kimi, ie的另存为貌似可以批量保存的,相对路径也没有问题.
PS,羡慕你,初三就会扒皮了,我大二才会….
要是图片不存在了,就会报错了
@lanqy, 是哦,简单的写了一下,你可以在取得图片的地方加个判断即可!
呵呵,我也写了这样一个东西。 http://www.sswowo.com/getcssimages/
站不错,今天搜一些PHP和MYSQL相关的内容进来的,我也是搞PHP的(当然还有其它的啦),做个友情链接吧,
我的网址是http://www.pl4cj.org/
目前放在Google App Engine上的,所以有时被墙会打不开,呵呵
这个真是好东西啊,多谢博主。
php的啊。,我以为是直接在线扒的那种呢。。
推荐博主可以搞一个在线的。这样会有更多的人。
file_get_contents 是可以获取到图片资源,但是要是这个资源没有,它直接就中断,我发现判断也无用,只能用设定获取次数,超过不用在获取
你好,在抓取数据的时候遇到问题:想抓取淘宝指数网站上的热门关键字,发现它不仅要求用户登录,而且用于验证的cookie值每请求一次就改变一次,这种情况如何处理好?