用Python写的图片蜘蛛人代码


Posted in Python onAugust 27, 2012
#coding=utf-8 import os 
import sys 
import re 
import urllib 
URL_REG = re.compile(r'(http://[^///]+)', re.I) 
IMG_REG = re.compile(r'<img[^>]*?src=([/'"])([^/1]*?)/1', re.I) 
def download(dir, url): 
'''下载网页中的图片 
@dir 保存到本地的路径 
@url 网页url 
''' 
global URL_REG, IMG_REG 
m = URL_REG.match(url) 
if not m: 
print '[Error]Invalid URL: ', url 
return 
host = m.group(1) 
if not os.path.isdir(dir): 
os.mkdir(dir) 
# 获取html,提取图片url 
html = urllib.urlopen(url).read() 
imgs = [item[1].lower() for item in IMG_REG.findall(html)] 
f = lambda path: path if path.startswith('http://') else / 
host + path if path.startswith('/') else url + '/' + path 
imgs = list(set(map(f, imgs))) 
print '[Info]Find %d images.' % len(imgs) 
# 下载图片 
for idx, img in enumerate(imgs): 
name = img.split('/')[-1] 
path = os.path.join(dir, name) 
try: 
print '[Info]Download(%d): %s'% (idx + 1, img) 
urllib.urlretrieve(img, path) 
except: 
print "[Error]Cant't download(%d): %s" % (idx + 1, img) 
def main(): 
if len(sys.argv) != 3: 
print 'Invalid argument count.' 
return 
dir, url = sys.argv[1:] 
download(dir, url) 
if __name__ == '__main__': 
# download('D://Imgs', 'http://www.163.com') 
main()
Python 相关文章推荐
python模拟登录百度代码分享(获取百度贴吧等级)
Dec 27 Python
Python中的defaultdict模块和namedtuple模块的简单入门指南
Apr 01 Python
Python中字典映射类型的学习教程
Aug 20 Python
详解Golang 与python中的字符串反转
Jul 21 Python
python中kmeans聚类实现代码
Feb 23 Python
利用python库在局域网内传输文件的方法
Jun 04 Python
django开发post接口简单案例,获取参数值的方法
Dec 11 Python
详解Python 函数如何重载?
Apr 23 Python
python实现五子棋小程序
Jun 18 Python
通过PYTHON来实现图像分割详解
Jun 26 Python
使用Django搭建web服务器的例子(最最正确的方式)
Aug 29 Python
Python3 requests模块如何模仿浏览器及代理
Jun 15 Python
Python模块学习 filecmp 文件比较
Aug 27 #Python
Python模块学习 datetime介绍
Aug 27 #Python
Python运行的17个时新手常见错误小结
Aug 07 #Python
Python 代码性能优化技巧分享
Aug 07 #Python
Python正则表达式介绍
Aug 06 #Python
python 实现文件的递归拷贝实现代码
Aug 02 #Python
python实现划词翻译
Apr 23 #Python
You might like
一个odbc连mssql分页的类
2006/10/09 PHP
ajax php传递和接收变量实现思路及代码
2012/12/19 PHP
解析php框架codeigniter中如何使用框架的session
2013/06/24 PHP
计算php页面运行时间的函数介绍
2013/07/01 PHP
php中strstr、strrchr、substr、stristr四个函数的区别总结
2014/09/22 PHP
php中ob_flush函数和flush函数用法分析
2015/03/18 PHP
php上传图片客户端和服务器端实现方法
2015/03/30 PHP
Laravel框架运行出错提示RuntimeException No application encryption key has been specified.解决方法
2019/04/02 PHP
用javascript连接access数据库的方法
2006/11/17 Javascript
获取非最后一列td值并将title设为该值的方法
2013/10/30 Javascript
轻松学习jQuery插件EasyUI EasyUI创建菜单与按钮
2015/11/30 Javascript
全面解析Bootstrap中scrollspy(滚动监听)的使用方法
2016/06/06 Javascript
js实现适配不同的屏幕大小
2017/04/10 Javascript
使用JS在浏览器中判断当前网络连接状态的几种方法
2017/05/05 Javascript
jQuery zTree 异步加载添加子节点重复问题
2017/11/29 jQuery
vue.js打包之后可能会遇到的坑!
2018/06/03 Javascript
VUE table表格动态添加一列数据,新增的这些数据不可以编辑(v-model绑定的数据不能实时更新)
2020/04/03 Javascript
antd配置config-overrides.js文件的操作
2020/10/31 Javascript
Python优化技巧之利用ctypes提高执行速度
2016/09/11 Python
Python管理Windows服务小脚本
2018/03/12 Python
matlab中实现矩阵删除一行或一列的方法
2018/04/04 Python
Python使用pickle模块储存对象操作示例
2018/08/15 Python
python中数组和矩阵乘法及使用总结(推荐)
2019/05/18 Python
flask应用部署到服务器的方法
2019/07/12 Python
CSS3制作炫酷的下拉菜单及弹起式选单的实例分享
2016/05/17 HTML / CSS
HTML5 source标签:媒介元素定义媒介资源
2018/01/29 HTML / CSS
微软英国官方网站:Microsoft英国
2016/10/15 全球购物
奥林匹亚体育:Olympia Sports
2020/12/30 全球购物
办公室文员自荐书
2014/02/03 职场文书
大学生毕业自我鉴定范文
2014/02/03 职场文书
小学生校园广播稿
2014/09/28 职场文书
给上级领导的感谢信
2015/01/22 职场文书
mysql多表查询-笔记七
2021/04/05 MySQL
关于Numpy之repeat、tile的用法总结
2021/06/02 Python
CSS3中Animation实现简单的手指点击动画的示例
2021/07/15 HTML / CSS
Spring Boot实战解决高并发数据入库之 Redis 缓存+MySQL 批量入库问题
2022/02/12 Redis