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 17 Python
python获取本机mac地址和ip地址的方法
Apr 29 Python
深入理解python中的闭包和装饰器
Jun 12 Python
Python模拟用户登录验证
Sep 11 Python
Django进阶之CSRF的解决
Aug 01 Python
用python打印1~20的整数实例讲解
Jul 01 Python
python openpyxl使用方法详解
Jul 18 Python
Python文件操作函数用法实例详解
Dec 24 Python
logging level级别介绍
Feb 21 Python
Python 利用flask搭建一个共享服务器的步骤
Dec 05 Python
Python tkinter之ComboBox(下拉框)的使用简介
Feb 05 Python
python的netCDF4批量处理NC格式文件的操作方法
Mar 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
无线电波是什么?它是怎样传输的?
2021/03/01 无线电
PHP4与PHP3中一个不兼容问题的解决方法
2006/10/09 PHP
打造超酷的PHP数据饼图效果实现代码
2011/11/23 PHP
php图片的裁剪与缩放生成符合需求的缩略图
2013/01/11 PHP
PHP中new static() 和 new self() 的区别介绍
2015/01/09 PHP
php基础设计模式大全(注册树模式、工厂模式、单列模式)
2015/08/31 PHP
解析PHP之提取多维数组指定列的方法
2017/01/03 PHP
让您的菜单不离网站
2006/10/03 Javascript
浅析JavaScript中的同名标识符优先级
2013/12/06 Javascript
js与jquery获取父元素,删除子元素的两种不同方法
2014/01/09 Javascript
微信小程序开发教程-手势解锁实例
2017/01/06 Javascript
flexslider.js实现移动端轮播
2017/02/05 Javascript
jQuery简单实现遍历单选框的方法
2017/03/06 Javascript
使用yeoman构建angular应用的方法
2017/08/14 Javascript
JavaScript之解构赋值的理解
2019/01/30 Javascript
angular4+百分比进度显示插件用法示例
2019/05/05 Javascript
JavaScript数组排序的六种常见算法总结
2020/08/18 Javascript
Vue3+elementui plus创建项目的方法
2020/12/01 Vue.js
wxPython定时器wx.Timer简单应用实例
2015/06/03 Python
Python中的getopt函数使用详解
2015/07/28 Python
Django开发的简易留言板案例详解
2018/12/04 Python
python实现微信机器人: 登录微信、消息接收、自动回复功能
2019/04/29 Python
python retrying模块的使用方法详解
2019/09/25 Python
python网络爬虫 Scrapy中selenium用法详解
2019/09/28 Python
Python的缺点和劣势分析
2019/11/19 Python
Python实现括号匹配方法详解
2020/02/10 Python
python获取天气接口给指定微信好友发天气预报
2020/12/28 Python
Pytorch模型迁移和迁移学习,导入部分模型参数的操作
2021/03/03 Python
什么是类的返射机制
2016/02/06 面试题
家长写给孩子的评语
2014/04/18 职场文书
地球物理学专业推荐信
2014/09/08 职场文书
实习协议书范本
2014/09/25 职场文书
会计求职自荐信
2015/03/26 职场文书
2019最新版火锅店的创业计划书 !
2019/07/12 职场文书
mysql 直接拷贝data 目录下文件还原数据的实现
2021/07/25 MySQL
Python之matplotlib绘制饼图
2022/04/13 Python