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中的True,False条件判断实例分析
Jan 12 Python
Python中使用装饰器来优化尾递归的示例
Jun 18 Python
通过源码分析Python中的切片赋值
May 08 Python
Django objects.all()、objects.get()与objects.filter()之间的区别介绍
Jun 12 Python
Python+OpenCV人脸检测原理及示例详解
Oct 19 Python
15行Python代码带你轻松理解令牌桶算法
Mar 21 Python
Python实现查找二叉搜索树第k大的节点功能示例
Jan 24 Python
Python 利用切片从列表中取出一部分使用的方法
Feb 01 Python
Python 转换RGB颜色值的示例代码
Oct 13 Python
vscode写python时的代码错误提醒和自动格式化的方法
May 07 Python
总结几个非常实用的Python库
Jun 26 Python
pycharm安装深度学习pytorch的d2l包失败问题解决
Mar 25 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
php GD绘制24小时柱状图
2008/06/28 PHP
关于IIS php调用com组件的权限问题
2012/01/11 PHP
PHP下的Oracle客户端扩展(OCI8)安装教程
2014/09/10 PHP
开发插件的两个方法jquery.fn.extend与jquery.extend
2013/11/21 Javascript
JavaScript jQuery 中定义数组与操作及jquery数组操作
2015/12/18 Javascript
三种带箭头提示框总结实例
2016/06/14 Javascript
Bootstrap CSS布局之按钮
2016/12/17 Javascript
jQuery代码实现实时获取时间
2017/01/29 Javascript
判断滚动条滑到底部触发事件(实例讲解)
2017/11/15 Javascript
JS常见构造模式实例对比分析
2018/08/27 Javascript
详谈js的变量提升以及使用方法
2018/10/06 Javascript
react实现同页面三级跳转路由布局
2019/09/26 Javascript
js判断密码强度的方法
2020/03/18 Javascript
24个ES6方法解决JS实际开发问题(小结)
2020/05/31 Javascript
[39:00]Optic vs VP 2018国际邀请赛淘汰赛BO3 第三场 8.24
2018/08/25 DOTA
Python编程中的文件操作攻略
2015/10/16 Python
Python部署web开发程序的几种方法
2017/05/05 Python
Python实现的计数排序算法示例
2017/11/29 Python
Python 调用 zabbix api的方法示例
2019/01/06 Python
Python实现删除排序数组中重复项的两种方法示例
2019/01/31 Python
python实现QQ空间自动点赞功能
2019/04/09 Python
OpenCV 模板匹配
2019/07/10 Python
python网络编程之五子棋游戏
2020/05/14 Python
python处理写入数据代码讲解
2020/10/22 Python
python 如何停止一个死循环的线程
2020/11/24 Python
爱尔兰灯和灯具网上商店:Lights.ie
2018/03/26 全球购物
数据库专业英语
2012/11/30 面试题
大学自荐信
2013/12/12 职场文书
勾股定理课后反思
2014/04/26 职场文书
史学专业毕业生求职信
2014/05/09 职场文书
公司投资建议书
2014/05/16 职场文书
餐饮服务食品安全责任书
2014/07/25 职场文书
财务务虚会发言材料
2014/10/20 职场文书
2019消防宣传标语!
2019/07/10 职场文书
iSCSI服务器CHAP双向认证配置
2022/04/01 Servers