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中的__init__和__new__
Mar 12 Python
Python学习pygal绘制线图代码分享
Dec 09 Python
使用apidocJs快速生成在线文档的实例讲解
Feb 07 Python
Python基于递归算法求最小公倍数和最大公约数示例
Jul 27 Python
Python3 Post登录并且保存cookie登录其他页面的方法
Dec 28 Python
python3+selenium实现126邮箱登陆并发送邮件功能
Jan 23 Python
Django中ajax发送post请求 报403错误CSRF验证失败解决方案
Aug 13 Python
如何基于python操作json文件获取内容
Dec 24 Python
Python列表切片常用操作实例解析
Mar 10 Python
对python中各个response的使用说明
Mar 28 Python
python 实现图片裁剪小工具
Feb 02 Python
Python可变集合和不可变集合的构造方法大全
Dec 06 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 return语句的另一个作用
2014/07/30 PHP
php自定义函数实现JS的escape的方法示例
2016/07/07 PHP
PHPCrawl爬虫库实现抓取酷狗歌单的方法示例
2017/12/21 PHP
javascript面向对象编程(一) 实例代码
2010/06/25 Javascript
A标签中通过href和onclick传递的this对象实现思路
2013/04/19 Javascript
把字符串按照特定的字母顺序进行排序的js代码
2014/01/28 Javascript
js控制再次点击按钮之间的间隔时间可防止重复提交
2014/08/01 Javascript
javascript常用代码段搜集
2014/12/04 Javascript
js事件处理程序跨浏览器解决方案
2016/03/27 Javascript
JS for...in 遍历语句用法实例分析
2016/08/24 Javascript
Koa2 之文件上传下载的示例代码
2018/03/29 Javascript
vue+jquery+lodash实现滑动时顶部悬浮固定效果
2018/04/28 jQuery
详解.vue文件中style标签的几个标识符
2018/07/17 Javascript
vue tab切换,解决echartst图表宽度只有100px的问题
2020/07/19 Javascript
react+antd 递归实现树状目录操作
2020/11/02 Javascript
Python中使用第三方库xlrd来写入Excel文件示例
2015/04/05 Python
python自动化生成IOS的图标
2018/11/13 Python
对python3中, print横向输出的方法详解
2019/01/28 Python
Python实现根据日期获取当天凌晨时间戳的方法示例
2019/04/09 Python
Pycharm运行加载文本出现错误的解决方法
2019/06/27 Python
python实时检测键盘输入函数的示例
2019/07/17 Python
python多线程实现同时执行两个while循环的操作
2020/05/02 Python
Python打印特殊符号及对应编码解析
2020/05/07 Python
如何在mac下配置python虚拟环境
2020/07/06 Python
如何在pycharm中安装第三方包
2020/10/27 Python
python+selenium+chrome实现淘宝购物车秒杀自动结算
2021/01/07 Python
使用简单的CSS3属性实现炫酷读者墙效果
2014/01/08 HTML / CSS
大学军训感言
2014/01/10 职场文书
《记承天寺夜游》教学反思
2014/02/16 职场文书
打架检讨书2000字
2014/02/22 职场文书
幼儿园春季开学寄语
2014/04/03 职场文书
青春奉献演讲稿
2014/05/08 职场文书
毕业实习证明(4篇)
2014/10/28 职场文书
结婚仪式主持词
2015/06/29 职场文书
十个Python自动化常用操作,即拿即用
2021/05/10 Python
pandas数值排序的实现实例
2021/07/25 Python