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 相关文章推荐
浅谈对yield的初步理解
May 29 Python
Python实现多进程共享数据的方法分析
Dec 04 Python
python使用logging模块发送邮件代码示例
Jan 18 Python
Flask入门之上传文件到服务器的方法示例
Jul 18 Python
python对日志进行处理的实例代码
Oct 06 Python
Python骚操作之动态定义函数
Mar 26 Python
Python入门Anaconda和Pycharm的安装和配置详解
Jul 16 Python
python os.path.isfile()因参数问题判断错误的解决
Nov 29 Python
python 实现人和电脑猜拳的示例代码
Mar 02 Python
OpenCV 表盘指针自动读数的示例代码
Apr 10 Python
jupyter notebook插入本地图片的实现
Apr 13 Python
微信小程序调用python模型
Apr 21 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
漫威DC即将合作联动,而双方早已经秘密开始
2020/04/09 欧美动漫
destoon各类调用汇总
2014/06/20 PHP
PHP输出一个等腰三角形的方法
2015/05/12 PHP
javascript代码编写需要注意的7个小细节小结
2011/09/21 Javascript
jQuery之DOM对象和jQuery对象的转换与区别分析
2015/01/08 Javascript
简单介绍jsonp 使用小结
2016/01/27 Javascript
谈一谈JS消息机制和事件机制的理解
2016/04/14 Javascript
Bootstrap中的表单验证插件bootstrapValidator使用方法整理(推荐)
2016/06/21 Javascript
AngularJS中的缓存使用
2017/01/11 Javascript
NodeJs的fs读写删除移动监听
2017/04/28 NodeJs
nodejs中安装ghost出错的原因及解决方法
2017/10/23 NodeJs
nodejs实现爬取网站图片功能
2017/12/14 NodeJs
详解Vue中组件传值的多重实现方式
2019/08/16 Javascript
layui button 按钮弹出提示窗口,确定才进行的方法
2019/09/06 Javascript
JS正则表达式验证端口范围(0-65535)
2020/01/06 Javascript
vue路由缓存的几种实现方式小结
2020/02/02 Javascript
vue操作dom元素的3种方法示例
2020/09/20 Javascript
[53:38]OG vs LGD 2018国际邀请赛淘汰赛BO3 第三场 8.26
2018/08/30 DOTA
python实现简单tftp(基于udp协议)
2018/07/30 Python
pyqt5 实现工具栏文字图片同时显示
2019/06/13 Python
Python企业编码生成系统之主程序模块设计详解
2019/07/26 Python
python基于celery实现异步任务周期任务定时任务
2019/12/30 Python
Pytorch 实现计算分类器准确率(总分类及子分类)
2020/01/18 Python
UGG美国官网:购买UGG雪地靴、拖鞋和鞋子
2017/12/31 全球购物
意大利制造的男鞋和女鞋:SCAROSSO
2018/03/07 全球购物
介绍下java.util.Arrays类
2012/10/16 面试题
给同学的道歉信
2014/01/16 职场文书
《美丽的彩虹》教学反思
2014/02/25 职场文书
《充气雨衣》教学反思
2014/04/07 职场文书
协议书范本
2014/04/23 职场文书
应届大学生求职信
2014/07/20 职场文书
购房委托书范本
2014/09/18 职场文书
小学生成绩单评语
2014/12/31 职场文书
网络妈妈观后感
2015/06/08 职场文书
Python虚拟环境virtualenv是如何使用的
2021/06/20 Python
Android Canvas绘制文字横纵向对齐
2022/06/05 Java/Android