对于我这种网页设计白痴来说,没什么比到处看别的网站并模仿之更好的写网页方法了。但是网站并不是首页html代码就行了,最关键的还是css样式以及各种装饰用图片sprites等。
发现一个好的模板到把好的模板据为己用是很麻烦的:你必须下载所有的css和图片,css和图片的路径可能各不相同并且夹杂着各种绝对与相对路径。这在css比较复杂的站点会繁琐无比,所以写了个小脚本用于批量获取ccs和图片以及改名。
效果:
- http://php5.obmem.info/drupal.org/
- http://php5.obmem.info/sc2.plu.cn/
- http://php5.obmem.info/sq.qidian.com/
- http://php5.obmem.info/wordpress.com/
- http://php5.obmem.info/www.hsbc.com/
- http://php5.obmem.info/www.tudou.com/
- http://php5.obmem.info/www.verycd.com/
- http://php5.obmem.info/www.simplecd.org/
这个东东理所当然地结合了我上次“python抓站脚本进阶篇”所提到的Fetcher以加快抓取速度,所以会显得略长。
代码在此:
使用方法:存为sitecopy.py,然后类似这样
python sitecopy.py http://drupal.org |
运行完毕会生成一个index.html文件和各种css/js/image文件,分别存放在media文件夹相应目录。
因为偷懒使用了shutil,所以在windows平台下可能会有些问题,懒得改用os.walk了。
这种脚本bug很多是必须的,因为各个网站都会有很奇葩的东东,欢迎留言报告bug。

wget命令就可以了吧
确实可以,如果只是为了镜像站点的话
如果目的是修改的话我觉得不太好使,一是多下载了很多不必要的东西,二是那目录名很纠结的,还得手动改。
第101行的 get(req,repeat) 应该是 self.get(req,repeat) 吧
我的编辑器里面报错,执行倒是没问题
嗯,可能写错了
好像有个警告,我的py版本是2.5.4的 警告提示:
C:\Users\admin\Desktop>python site.py http://www.baidu.com
site.py:115: Warning: 'with' will become a reserved keyword in Python 2.6
File "site.py", line 115
with self.lock:
^
SyntaxError: invalid syntax
这个需要python 2.6以上版本的才行……
我错了,with用来做上下文锁太方便了,不知不觉就……
那段代码的锁其实并不是必须的,反正有出错管理的,把with lock那个两个block全部删了就好
支持css里面的定义的背景图片抓取吗吗?
支持
你丫真有才:)
为何我抓取到的图片全部都是无效的图片,或者有问题的图片?win系统下
站点相关吧,有些站有防盗链什么的可能就不行了,把目标站说来听听,我看看具体是什么问题
就试了一下土豆
好东西,懒人专用。吼吼。
python 是用 2.6的比较好,还是3.0的?
2的库比3全很多,我一直用2,除非我依赖的主要的库全部都有3的版本
我用Python 3.0.1的来抓取,出现如下提示
python sitecopy.py http://drupal.org
File “sitecopy.py”, line 100
print ‘no thread, return get instead’
^
SyntaxError: invalid syntax
是python版本原因么
建议先不要用python3,很多库都没有的,或者你用2to3转一下看看能不能用
File “sitecopy.py”, line 89, in __init__
t = Thread(target=self.threadget)
AttributeError: Fetcher instance has no attribute ‘threadget’
博主,这是啥错哦
不知道,这个错没理由发生的,你是不是复制漏了点啥
Pingback: JingHong's Blog » sitecopy-一个用于山寨网站UI脚本
博主 大牛啊
你这个比 ”浏览器网页另存为“ 有什么优势?
看了你的视频 感觉你好可爱 哈哈哈 http://www.simplecd.org/static/tutorial.html
靠。 博主才真正是一朵奇葩啊。 山寨了个小站。。献丑了。 哈哈http://www.9down.cc