用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操作sqlite3快速、安全插入数据(防注入)的实例
Apr 26 Python
python实现对一个完整url进行分割的方法
Apr 29 Python
详解Python程序与服务器连接的WSGI接口
Apr 29 Python
Python获取SQLite查询结果表列名的方法
Jun 21 Python
Python查找第n个子串的技巧分享
Jun 27 Python
如何优雅地处理Django中的favicon.ico图标详解
Jul 05 Python
python解压TAR文件至指定文件夹的实例
Jun 10 Python
django连接oracle时setting 配置方法
Aug 29 Python
使用virtualenv创建Python环境及PyQT5环境配置的方法
Sep 10 Python
Python使用pyyaml模块处理yaml数据
Apr 14 Python
Python selenium 加载并保存QQ群成员,去除其群主、管理员信息的示例代码
May 28 Python
Python全局变量与global关键字常见错误解决方案
Oct 05 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
PHP MYSQL简易交互式站点开发
2016/12/27 PHP
用PHP做了一个领取优惠券活动的示例代码
2019/07/05 PHP
详解no input file specified 三种解决方法
2019/11/29 PHP
有道JavaScript监听浏览器的问题
2010/06/23 Javascript
JQuery与JSon实现的无刷新分页代码
2011/09/13 Javascript
js使用html()或text()方法获取设置p标签的显示的值
2014/08/01 Javascript
js与C#进行时间戳转换
2014/11/14 Javascript
jQuery UI插件自定义confirm确认框的方法
2015/03/20 Javascript
jQuery实现的向下图文信息滚动效果
2015/05/03 Javascript
js随机生成26个大小写字母
2016/02/12 Javascript
node.js 中国天气预报 简单实现
2016/06/06 Javascript
JS获取及验证开始结束日期的方法
2016/08/20 Javascript
JS 对java返回的json格式的数据处理方法
2016/12/05 Javascript
关于前后端json数据的发送与接收详解
2017/07/30 Javascript
js删除对象/数组中null、undefined、空对象及空数组方法示例
2018/11/14 Javascript
Vue中JS动画与Velocity.js的结合使用
2019/02/13 Javascript
layui使用label标签的方法
2019/09/14 Javascript
使用 Vue-TCB 快速在 Vue 应用中接入云开发的方法
2020/02/10 Javascript
js观察者模式的弹幕案例
2020/11/23 Javascript
[02:25]DOTA2英雄基础教程 虚空假面
2014/01/02 DOTA
python dict.get()和dict['key']的区别详解
2016/06/30 Python
Python对列表中的各项进行关联详解
2017/08/15 Python
Python装饰器原理与用法分析
2018/04/30 Python
用pycharm开发django项目示例代码
2018/10/24 Python
对python 合并 累加两个dict的实例详解
2019/01/21 Python
python实现抖音点赞功能
2019/04/07 Python
wxpython多线程防假死与线程间传递消息实例详解
2019/12/13 Python
python pyqtgraph 保存图片到本地的实例
2020/03/14 Python
python怎么删除缓存文件
2020/07/19 Python
沙特阿拉伯排名第一的在线时尚购物应用程序:1Zillion
2020/08/08 全球购物
Yahoo-PHP面试题4
2012/05/05 面试题
公司任命书模板
2014/06/06 职场文书
车辆委托书范本
2014/10/05 职场文书
MySQL系列之七 MySQL存储引擎
2021/07/02 MySQL
Python内置数据结构列表与元组示例详解
2021/08/04 Python
centos8安装MongoDB的详细过程
2021/10/24 MongoDB