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异常处理总结
Aug 15 Python
python之wxPython菜单使用详解
Sep 28 Python
用Python制作简单的钢琴程序的教程
Apr 01 Python
Python使用Mechanize模块编写爬虫的要点解析
Mar 31 Python
Python实现读取Properties配置文件的方法
Mar 29 Python
pandas 实现将重复表格去重,并重新转换为表格的方法
Apr 18 Python
python可视化实现代码
Jan 15 Python
Python OpenCV中的resize()函数的使用
Jun 20 Python
关于pytorch处理类别不平衡的问题
Dec 31 Python
Python greenlet和gevent使用代码示例解析
Apr 01 Python
Django使用Profile扩展User模块方式
May 14 Python
可视化pytorch 模型中不同BN层的running mean曲线实例
Jun 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
SONY SRF-40W电路分析
2021/03/02 无线电
无限级别菜单的实现
2006/10/09 PHP
PHP实现图片简单上传
2006/10/09 PHP
什么是MVC,好东西啊
2007/05/03 PHP
Windows下安装Memcached的步骤说明
2010/04/25 PHP
php生成局部唯一识别码LUID的代码
2012/10/06 PHP
浅谈thinkphp的实例化模型
2015/01/04 PHP
Yii2.0 模态弹出框+ajax提交表单
2016/05/22 PHP
thinkphp5.1 文件引入路径问题及注意事项
2018/06/13 PHP
在js中判断checkboxlist(.net控件客户端id)是否有选中
2013/04/11 Javascript
js获取光标位置和设置文本框光标位置示例代码
2014/01/09 Javascript
常见JS验证脚本汇总
2015/12/01 Javascript
jQuery Chosen通用初始化
2017/03/07 Javascript
浅谈Node.js轻量级Web框架Express4.x使用指南
2017/05/03 Javascript
Vue实现一个无限加载列表功能
2018/11/13 Javascript
Antd-vue Table组件添加Click事件,实现点击某行数据教程
2020/11/17 Javascript
python打开文件并获取文件相关属性的方法
2015/04/23 Python
python print 按逗号或空格分隔的方法
2018/05/02 Python
Python读取mat文件,并转为csv文件的实例
2018/07/04 Python
使用Scrapy爬取动态数据
2018/10/21 Python
Python实现带参数的用户验证功能装饰器示例
2018/12/14 Python
应用OpenCV和Python进行SIFT算法的实现详解
2019/08/21 Python
Python3之字节串bytes与字节数组bytearray的使用详解
2019/08/27 Python
Python中turtle库的使用实例
2019/09/09 Python
Python numpy线性代数用法实例解析
2019/11/15 Python
Python pandas RFM模型应用实例详解
2019/11/20 Python
Tensorflow训练MNIST手写数字识别模型
2020/02/13 Python
OPPO手机官方商城:中国手机市场出货量第一品牌
2017/10/18 全球购物
怎样让char类型的东西转换成int类型
2013/12/09 面试题
几个数据库方面的面试题
2016/07/01 面试题
应届生.NET方向面试题
2015/05/23 面试题
微笑面对生活演讲稿
2014/05/13 职场文书
2015年物业公司保洁工作总结
2015/10/22 职场文书
企业转让协议书(范文2篇)
2019/08/15 职场文书
MySQL创建高性能索引的全步骤
2021/05/02 MySQL
详解pytorch创建tensor函数
2022/03/22 Python