用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使用win32com在百度空间插入html元素示例
Feb 20 Python
实例解析Python的Twisted框架中Deferred对象的用法
May 25 Python
Python常用算法学习基础教程
Apr 13 Python
Python实现删除列表中满足一定条件的元素示例
Jun 12 Python
PyQt5每天必学之工具提示功能
Apr 19 Python
Django后台获取前端post上传的文件方法
May 28 Python
Tensorflow模型实现预测或识别单张图片
Jul 19 Python
Python+OpenCv制作证件图片生成器的操作方法
Aug 21 Python
使用OpenCV-python3实现滑动条更新图像的Canny边缘检测功能
Dec 12 Python
python如何通过闭包实现计算器的功能
Feb 22 Python
python实现将字符串中的数字提取出来然后求和
Apr 02 Python
python为什么会环境变量设置不成功
Jun 23 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实现简单的MVC框架实例
2015/09/23 PHP
PHP大文件切割上传并带进度条功能示例
2019/07/01 PHP
php layui实现前端多图上传实例
2019/07/30 PHP
Javascript 同时提交多个Web表单的方法
2009/02/19 Javascript
Colortip基于jquery的信息提示框插件在IE6下面的显示问题修正方法
2010/12/06 Javascript
js解析与序列化json数据(三)json的解析探讨
2013/02/01 Javascript
js confirm()方法的使用方法实例
2013/07/13 Javascript
IE6-IE9中tbody的innerHTML不能赋值的解决方法
2014/09/26 Javascript
js计算任意值之间随机数的方法
2015/01/16 Javascript
javascript实现在网页中运行本地程序的方法
2016/02/03 Javascript
javascript简单判断输入内容是否合法的方法
2016/05/11 Javascript
jQuery mobile在页面加载时添加加载中效果 document.ready 和window.onload执行顺序比较
2016/07/14 Javascript
如何在Angular.JS中接收并下载PDF
2016/11/26 Javascript
Angular2使用Angular-CLI快速搭建工程(二)
2017/05/21 Javascript
浅谈jquery fullpage 插件增加头部和版权的方法
2018/03/20 jQuery
js 数组详细操作方法及解析合集
2018/06/01 Javascript
JavaScript设计模式之观察者模式(发布订阅模式)原理与实现方法示例
2018/07/27 Javascript
vue的style绑定background-image的方式和其他变量数据的区别详解
2018/09/03 Javascript
vue.draggable实现表格拖拽排序效果
2018/12/01 Javascript
ES6的异步终极解决方案分享
2019/07/11 Javascript
vue动态循环出的多个select出现过的变为disabled(实例代码)
2019/11/10 Javascript
在Chrome DevTools中调试JavaScript的实现
2020/04/07 Javascript
JavaScript缺少insertAfter解决方案
2020/07/03 Javascript
Python查询Mysql时返回字典结构的代码
2012/06/18 Python
Python正则表达式教程之三:贪婪/非贪婪特性
2017/03/02 Python
详解Python自建logging模块
2018/01/29 Python
解决项目pycharm能运行,在终端却无法运行的问题
2019/01/19 Python
Pycharm2020.1安装中文语言插件的详细教程(不需要汉化)
2020/08/07 Python
2014年清明节寄语
2014/04/03 职场文书
工作经历证明书范文
2014/11/02 职场文书
群众路线调研报告范文
2014/11/03 职场文书
2015年毕业实习工作总结
2015/05/29 职场文书
国庆节新闻稿
2015/07/17 职场文书
会议主持词通用版
2019/04/02 职场文书
委托开发合同书(标准版)
2019/08/07 职场文书
python实现三次密码验证的示例
2021/04/29 Python