用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用reduce和map把字符串转为数字的方法
Dec 19 Python
Python中max函数用于二维列表的实例
Apr 03 Python
Sanic框架应用部署方法详解
Jul 18 Python
使用Python操作FTP实现上传和下载的方法
Apr 01 Python
python ftplib模块使用代码实例
Dec 31 Python
python求最大公约数和最小公倍数的简单方法
Feb 13 Python
pycharm激活码快速激活及使用步骤
Mar 12 Python
django model object序列化实例
Mar 13 Python
python 工具 字符串转numpy浮点数组的实现
Mar 14 Python
在Windows上安装和配置 Jupyter Lab 作为桌面级应用程序教程
Apr 22 Python
keras .h5转移动端的.tflite文件实现方式
May 25 Python
通过Python实现Payload分离免杀过程详解
Jul 13 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
5.PHP的其他功能
2006/10/09 PHP
PHP编程中八种常见的文件操作方式
2006/11/19 PHP
Yii PHP Framework实用入门教程(详细介绍)
2013/06/18 PHP
PHP模块memcached使用指南
2014/12/08 PHP
discuz目录文件资料汇总
2014/12/30 PHP
使用纯php代码实现页面伪静态的方法
2015/07/25 PHP
php实现微信扫码自动登陆与注册功能
2016/09/22 PHP
php微信公众号开发之简答题
2018/10/20 PHP
thinkPHP3.2使用RBAC实现权限管理的实现
2019/08/27 PHP
PHP实现递归的三种方法
2020/07/04 PHP
JavaScript 函数参数是传值(byVal)还是传址(byRef) 分享
2013/07/02 Javascript
eclipse导入jquery包后报错的解决方法
2014/02/17 Javascript
JavaScript及jquey实现多个数组的合并操作
2014/09/06 Javascript
Javascript获取当前日期的农历日期代码
2014/10/08 Javascript
node.js中的emitter.emit方法使用说明
2014/12/10 Javascript
js中实现字符串和数组的相互转化详解
2016/01/24 Javascript
JavaScript中 ES6 generator数据类型详解
2016/08/11 Javascript
jQuery中值得注意的trigger方法浅析
2016/12/12 Javascript
VUE 使用中踩过的坑
2018/02/08 Javascript
vue 列表页跳转详情页获取id以及详情页通过id获取数据
2019/03/27 Javascript
浅谈layui 表单元素的选中问题
2019/10/25 Javascript
JS+CSS实现随机点名(实例代码)
2019/11/04 Javascript
Python时间戳使用和相互转换详解
2017/12/11 Python
python编写分类决策树的代码
2017/12/21 Python
python微信跳一跳系列之色块轮廓定位棋盘
2018/02/26 Python
设置python3为默认python的方法
2018/10/31 Python
python正则表达式匹配[]中间为任意字符的实例
2018/12/25 Python
使用python的pandas为你的股票绘制趋势图
2019/06/26 Python
python Gabor滤波器讲解
2020/10/26 Python
如何通过安装HomeBrew来安装Python3
2020/12/23 Python
牦牛毛户外探险服装:Kora
2019/02/08 全球购物
美国踏板车和轻便摩托车销售网站:Mega Motor Madness
2020/02/26 全球购物
中医药大学市场营销专业自荐信
2013/09/29 职场文书
建筑专业自荐信范文
2014/01/05 职场文书
怎么写自荐书范文
2014/02/12 职场文书
期终自我鉴定
2014/02/17 职场文书