用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中的一些类型转换函数小结
Feb 10 Python
Python处理文本文件中控制字符的方法
Feb 07 Python
python实现一个简单的并查集的示例代码
Mar 19 Python
详解python3中tkinter知识点
Jun 21 Python
使用pyinstaller打包PyQt4程序遇到的问题及解决方法
Jun 24 Python
django基础学习之send_mail功能
Aug 07 Python
python基础教程之while循环
Aug 14 Python
Window10下python3.7 安装与卸载教程图解
Sep 30 Python
Django+uni-app实现数据通信中的请求跨域的示例代码
Oct 12 Python
如何关掉pycharm中的python console(图解)
Oct 31 Python
使用python采集Excel表中某一格数据
May 14 Python
python实现xlwt xlrd 指定条件给excel行添加颜色
Jul 14 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跨站刷票的实现代码
2013/06/18 PHP
php读取XML的常见方法实例总结
2017/04/25 PHP
javascript 屏蔽鼠标键盘的几段代码
2008/01/02 Javascript
js判断输入是否为正整数、浮点数等数字的函数代码
2010/11/17 Javascript
javascript 事件处理程序介绍
2012/06/27 Javascript
深入领悟JavaScript中的面向对象
2013/11/18 Javascript
实现51Map地图接口(示例代码)
2013/11/22 Javascript
深入探密Javascript数组方法
2015/01/08 Javascript
js+css绘制颜色动态变化的圈中圈效果
2016/01/27 Javascript
小白谈谈对JS原型链的理解
2016/05/03 Javascript
NodeJS中的MongoDB快速入门详细教程
2016/11/11 NodeJs
node.js中fs.stat与fs.fstat的区别详解
2017/06/01 Javascript
随机生成10个不重复的0-100的数字(实例讲解)
2017/08/16 Javascript
Vue的移动端多图上传插件vue-easy-uploader的示例代码
2017/11/27 Javascript
基于nodejs实现微信支付功能
2017/12/20 NodeJs
[53:10]完美世界DOTA2联赛决赛日 FTD vs GXR 第二场 11.08
2020/11/11 DOTA
[57:31]DOTA2-DPC中国联赛 正赛 SAG vs CDEC BO3 第一场 2月1日
2021/03/11 DOTA
Python编码时应该注意的几个情况
2013/03/04 Python
Python程序员鲜为人知但你应该知道的17个问题
2014/06/04 Python
在Gnumeric下使用Python脚本操作表格的教程
2015/04/14 Python
浅谈Python实现2种文件复制的方法
2018/01/19 Python
Python高级特性切片(Slice)操作详解
2018/09/27 Python
Python使用Shelve保存对象方法总结
2019/01/28 Python
Python 类,property属性(简化属性的操作),@property,property()用法示例
2019/10/12 Python
python中的函数递归和迭代原理解析
2019/11/14 Python
在PyCharm中实现添加快捷模块
2020/02/12 Python
python实现猜单词游戏
2020/05/22 Python
Python flask路由间传递变量实例详解
2020/06/03 Python
python tqdm库的使用
2020/11/30 Python
用python读取xlsx文件
2020/12/17 Python
css3中仿放大镜效果的几种方式原理解析
2020/12/03 HTML / CSS
英国工具中心:UK Tool Centre
2017/07/10 全球购物
Java里面StringBuilder和StringBuffer有什么区别
2016/06/06 面试题
简单说下OSPF的操作过程
2014/08/13 面试题
横幅标语大全
2014/06/17 职场文书
redis配置文件中常用配置详解
2021/04/14 Redis