python实现下载指定网址所有图片的方法


Posted in Python onAugust 08, 2015

本文实例讲述了python实现下载指定网址所有图片的方法。分享给大家供大家参考。具体实现方法如下:

#coding=utf-8
#download pictures of the url
#useage: python downpicture.py www.baidu.com
import os
import sys
from html.parser import HTMLParser
from urllib.request import urlopen
from urllib.parse import urlparse
def getpicname(path):
  '''  retrive filename of url    '''
  if os.path.splitext(path)[1] == '':
    return None
  pr=urlparse(path)
  path='http://'+pr[1]+pr[2]
  return os.path.split(path)[1]
def saveimgto(path, urls):
  '''
  save img of url to local path
  '''
  if not os.path.isdir(path):
    print('path is invalid')
    sys.exit()
  else:
    for url in urls:
      of=open(os.path.join(path, getpicname(url)), 'w+b')
      q=urlopen(url)
      of.write(q.read())
      q.close()
      of.close()
class myhtmlparser(HTMLParser):
  '''put all src of img into urls'''
  def __init__(self):
    HTMLParser.__init__(self)
    self.urls=list()
    self.num=0
  def handle_starttag(self, tag, attr):
    if tag.lower() == 'img':
      srcs=[u[1] for u in attr if u[0].lower() == 'src']
      self.urls.extend(srcs)
      self.num = self.num+1
if __name__ == '__main__':
  url=sys.argv[1]
  if not url.startswith('http://'):
    url='http://' + sys.argv[1]
  parseresult=urlparse(url)
  domain='http://' + parseresult[1]
  q=urlopen(url)
  content=q.read().decode('utf-8', 'ignore')
  q.close()
  myparser=myhtmlparser()
  myparser.feed(content)
  for u in myparser.urls:
    if (u.startswith('//')):
      myparser.urls[myparser.urls.index(u)]= 'http:'+u
    elif u.startswith('/'):
      myparser.urls[myparser.urls.index(u)]= domain+u
  saveimgto(r'D:\python\song', myparser.urls)
  print('num of download pictures is {}'.format(myparser.num))

运行结果如下:

num of download pictures is 19

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
Python中用于转换字母为小写的lower()方法使用简介
May 19 Python
python获得一个月有多少天的方法
Jun 04 Python
python实现汉诺塔递归算法经典案例
Mar 01 Python
Python 对输入的数字进行排序的方法
Jun 23 Python
tensorflow学习教程之文本分类详析
Aug 07 Python
Python正则表达式和元字符详解
Nov 29 Python
Python Numpy库安装与基本操作示例
Jan 08 Python
Python3.7 dataclass使用指南小结
Feb 22 Python
python的移位操作实现详解
Aug 21 Python
决策树剪枝算法的python实现方法详解
Sep 18 Python
Python进程的通信Queue、Pipe实例分析
Mar 30 Python
Python self用法详解
Nov 28 Python
Python实现多线程抓取妹子图
Aug 08 #Python
通过Python来使用七牛云存储的方法详解
Aug 07 #Python
Python爬虫框架Scrapy实战之批量抓取招聘信息
Aug 07 #Python
深入理解Python中命名空间的查找规则LEGB
Aug 06 #Python
举例详解Python中yield生成器的用法
Aug 05 #Python
Python中return语句用法实例分析
Aug 04 #Python
python函数形参用法实例分析
Aug 04 #Python
You might like
PHP中$_SERVER的详细参数与说明
2008/07/29 PHP
实现PHP+Mysql无限分类的方法汇总
2015/03/02 PHP
双击滚屏-常用推荐
2006/11/29 Javascript
jQuery.prototype.init选择器构造函数源码思路分析
2013/02/05 Javascript
JS实现定时页面弹出类似QQ新闻的提示框
2013/11/07 Javascript
javascript 表格内容排序 简单操作示例代码
2014/01/03 Javascript
QQ空间顶部折页撕开效果示例代码
2014/06/15 Javascript
随鼠标移动的时钟非常漂亮遗憾的是只支持IE
2014/08/12 Javascript
JavaScript实现网页加载进度条代码超简单
2015/09/21 Javascript
js实现表单提交后不重新刷新当前页面
2016/11/30 Javascript
ajax实现动态下拉框示例
2017/01/10 Javascript
bootstrap table插件的分页与checkbox使用详解
2017/07/23 Javascript
React-Native 组件之 Modal的使用详解
2017/08/08 Javascript
js实现音乐播放控制条
2017/09/09 Javascript
vue a标签点击实现赋值方式
2020/09/07 Javascript
[02:25]DOTA2英雄基础教程 生死判决瘟疫法师
2013/12/06 DOTA
Python ORM框架SQLAlchemy学习笔记之数据添加和事务回滚介绍
2014/06/10 Python
Python中的匿名函数使用简介
2015/04/27 Python
Python下载网络文本数据到本地内存的四种实现方法示例
2018/02/05 Python
django ManyToManyField多对多关系的实例详解
2019/08/09 Python
ubuntu上安装python的实例方法
2019/09/30 Python
使用OpenCV-python3实现滑动条更新图像的Canny边缘检测功能
2019/12/12 Python
python 负数取模运算实例
2020/06/03 Python
css3学习系列之移动属性详解
2017/07/04 HTML / CSS
UGG雪地靴荷兰官网:UGG荷兰
2016/09/09 全球购物
德国便宜的宠物店:Brekz.de
2020/10/23 全球购物
建筑公司文秘岗位职责
2013/11/29 职场文书
优秀党支部事迹材料
2014/01/14 职场文书
乡镇干部先进事迹材料
2014/02/03 职场文书
三年级评语大全
2014/04/23 职场文书
好人好事演讲稿
2014/09/01 职场文书
2014年大学生社会实践自我鉴定
2014/09/26 职场文书
四风问题民主生活会对照检查材料思想汇报
2014/09/27 职场文书
项目技术负责人岗位职责
2015/04/13 职场文书
2015年财务部年度工作总结
2015/05/19 职场文书
利用Java连接Hadoop进行编程
2022/06/28 Java/Android