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中的数据存储到系统本地的简单方法
Apr 11 Python
Python实现控制台进度条功能
Jan 04 Python
python使用两种发邮件的方式smtp和outlook示例
Jun 02 Python
深入理解Python中的*重复运算符
Oct 28 Python
python绘制简单折线图代码示例
Dec 19 Python
解决Pandas to_json()中文乱码,转化为json数组的问题
May 10 Python
python实现windows下文件备份脚本
May 27 Python
python3将视频流保存为本地视频文件
Jun 20 Python
详解PyCharm安装MicroPython插件的教程
Jun 24 Python
django之使用celery-把耗时程序放到celery里面执行的方法
Jul 12 Python
查看keras各种网络结构各层的名字方式
Jun 11 Python
python单例模式的应用场景实例讲解
Feb 24 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
一个从别的网站抓取信息的例子(域名查询)
2006/10/09 PHP
function.inc.php超越php
2006/12/09 PHP
PHP的5个安全措施小结
2012/07/17 PHP
PHP生成指定长度随机数最简洁的方法
2014/07/14 PHP
微信公众平台开发教程⑥ 微信开发集成类的使用图文详解
2019/04/10 PHP
Aster vs Newbee BO3 第二场2.18
2021/03/10 DOTA
jQuery 性能优化指南(3)
2009/05/21 Javascript
JavaScript取得鼠标绝对位置程序代码介绍
2012/09/16 Javascript
NodeJS制作爬虫全过程
2014/12/22 NodeJs
jQuery中extend函数详解
2015/02/13 Javascript
原生js和jQuery写的网页选项卡特效对比
2015/04/27 Javascript
js数组去重的方法汇总
2015/07/29 Javascript
浅谈jQuery中ajaxPrefilter的应用
2016/08/01 Javascript
微信小程序开发之实现自定义Toast弹框
2017/06/08 Javascript
Node.js  REPL (交互式解释器)实例详解
2017/08/06 Javascript
vue+swiper实现侧滑菜单效果
2017/12/28 Javascript
关于jquery中attr()和prop()方法的区别
2018/05/28 jQuery
解决element-ui中下拉菜单子选项click事件不触发的问题
2018/08/22 Javascript
微信小程序跨页面数据传递事件响应实现过程解析
2019/12/19 Javascript
原生js实现瀑布流效果
2020/03/09 Javascript
[52:20]VP vs VG Supermajor小组赛 B组胜者组决赛 BO3 第一场 6.2
2018/06/03 DOTA
让python的Cookie.py模块支持冒号做key的方法
2010/12/28 Python
跟老齐学Python之玩转字符串(2)
2014/09/14 Python
深入讲解Python中的迭代器和生成器
2015/10/26 Python
python计算auc指标实例
2017/07/13 Python
Python FtpLib模块应用操作详解
2019/12/12 Python
python实现双人五子棋(终端版)
2020/12/30 Python
麦德龙官方海外旗舰店:德国麦德龙超市
2017/12/23 全球购物
大专应届生个人简历的自我评价
2013/10/15 职场文书
自荐信写法介绍
2014/01/25 职场文书
国家助学金获奖感言
2014/01/31 职场文书
白酒市场营销方案
2014/02/25 职场文书
大学生党员自我批评思想汇报
2014/10/10 职场文书
2014年初级职称工作总结
2014/12/08 职场文书
JavaScript模拟实现网易云轮播效果
2022/04/04 Javascript
悬疑名作《朋友游戏》动画无字ED宣传片 新角色公开
2022/04/13 日漫