用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使用reportlab实现图片转换成pdf的方法
May 22 Python
Python编程中字符串和列表的基本知识讲解
Oct 14 Python
基于Python对象引用、可变性和垃圾回收详解
Aug 21 Python
pyqt5自定义信号实例解析
Jan 31 Python
Python在groupby分组后提取指定位置记录方法
Apr 20 Python
浅谈Tensorflow模型的保存与恢复加载
Apr 26 Python
Pycharm2017版本设置启动时默认自动打开项目的方法
Oct 29 Python
Django中的forms组件实例详解
Nov 08 Python
python五子棋游戏的设计与实现
Jun 18 Python
Python列表对象实现原理详解
Jul 01 Python
python对输出的奇数偶数排序实例代码
Dec 04 Python
python读取并查看npz/npy文件数据以及数据显示方法
Apr 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面向对象全攻略 (十五) 多态的应用
2009/09/30 PHP
php生成excel文件的简单方法
2014/02/08 PHP
php反射应用示例
2014/02/25 PHP
php生成excel列名超过26列大于Z时的解决方法
2014/12/29 PHP
linux下实现定时执行php脚本
2015/02/13 PHP
PHP连接access数据库
2015/03/27 PHP
浅析php-fpm静态和动态执行方式的比较
2016/11/09 PHP
yii2 commands模式以及配置crontab定时任务的方法
2017/08/19 PHP
PHP解析url并得到url参数方法总结
2018/10/11 PHP
JS运行耗时操作的延时显示方法
2010/11/19 Javascript
Javascript函数式编程简单介绍
2015/10/11 Javascript
JQuery动态添加Select的Option元素实现方法
2016/08/29 Javascript
详解angular element()方法使用
2017/04/08 Javascript
vue的Virtual Dom实现snabbdom解密
2017/05/03 Javascript
JS实现的将html转为pdf功能【基于浏览器端插件jsPDF】
2018/02/06 Javascript
详解vuex中mapState,mapGetters,mapMutations,mapActions的作用
2018/04/13 Javascript
Vue.js桌面端自定义滚动条组件之美化滚动条VScroll
2020/12/01 Vue.js
python支持断点续传的多线程下载示例
2014/01/16 Python
python模块之StringIO使用示例
2015/04/08 Python
Python实现读取及写入csv文件的方法示例
2018/01/12 Python
Python tkinter事件高级用法实例
2018/01/31 Python
python中map的基本用法示例
2018/09/10 Python
Python面向对象程序设计OOP深入分析【构造函数,组合类,工具类等】
2019/01/05 Python
详解Python3网络爬虫(二):利用urllib.urlopen向有道翻译发送数据获得翻译结果
2019/05/07 Python
python程序需要编译吗
2020/06/19 Python
详解Tensorflow不同版本要求与CUDA及CUDNN版本对应关系
2020/08/04 Python
CSS3 实现穿梭星空动画
2020/11/13 HTML / CSS
澳大利亚女士时装在线:Rockmans
2018/09/26 全球购物
日本必酷网络直营店:Biccamera
2019/03/23 全球购物
Farfetch中文官网:奢侈品牌时尚购物平台
2020/03/15 全球购物
信息与计算科学专业推荐信
2014/02/23 职场文书
工人先锋号申报材料
2014/12/29 职场文书
给朋友的赠语
2015/06/23 职场文书
golang 比较浮点数的大小方式
2021/05/02 Golang
教你用python实现12306余票查询
2021/06/30 Python
Redis模仿手机验证码发送的实现示例
2021/11/02 Redis