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基础教程之获取本机ip数据包示例
Feb 10 Python
Python爬虫辅助利器PyQuery模块的安装使用攻略
Apr 24 Python
Python xlwt设置excel单元格字体及格式
Apr 18 Python
Python最小二乘法矩阵
Jan 02 Python
Python动态语言与鸭子类型详解
Jul 01 Python
利用Python复制文件的9种方法总结
Sep 02 Python
python SocketServer源码深入解读
Sep 17 Python
信号生成及DFT的python实现方式
Feb 25 Python
Python RabbitMQ实现简单的进程间通信示例
Jul 02 Python
python dict如何定义
Sep 02 Python
Django项目如何获得SSL证书与配置HTTPS
Apr 30 Python
使用Python解决图表与画布的间距问题
Apr 11 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
javascript 小型动画组件与实现代码
2010/06/02 PHP
php上传中文文件名乱码问题处理方案
2015/02/03 PHP
PHP实现对数组分页处理实例详解
2017/02/07 PHP
两个Javascript小tip资料
2010/11/23 Javascript
jQuery判断checkbox是否选中的3种方法
2014/08/12 Javascript
Jquery中基本选择器用法实例详解
2015/05/18 Javascript
基于BootStrap Metronic开发框架经验小结【二】列表分页处理和插件JSTree的使用
2016/05/12 Javascript
简单实现jQuery级联菜单
2017/01/09 Javascript
bootstrap弹出层的多种触发方式
2017/05/10 Javascript
基于JavaScript实现弹幕特效
2020/08/27 Javascript
AngularJS路由删除#符号解决的办法
2017/09/28 Javascript
JavaScript对象的浅拷贝与深拷贝实例分析
2018/07/25 Javascript
解决vue attr取不到属性值的问题
2018/09/18 Javascript
使用vue2.0创建的项目的步骤方法
2018/09/25 Javascript
vue组件库的在线主题编辑器的实现思路
2020/04/03 Javascript
Python中非常实用的一些功能和函数分享
2015/02/14 Python
python实现查询苹果手机维修进度
2015/03/16 Python
浅析Python中的join()方法的使用
2015/05/19 Python
python得到windows自启动列表的方法
2018/10/14 Python
Python版名片管理系统
2018/11/30 Python
django ManyToManyField多对多关系的实例详解
2019/08/09 Python
Python一键安装全部依赖包的方法
2019/08/12 Python
如何利用Python开发一个简单的猜数字游戏
2019/09/22 Python
Python自动化完成tb喵币任务的操作方法
2019/10/30 Python
Python3.7+tkinter实现查询界面功能
2019/12/24 Python
TensorFlow绘制loss/accuracy曲线的实例
2020/01/21 Python
python线程优先级队列知识点总结
2021/02/28 Python
Gap中国官网:美式休闲风服饰
2017/02/05 全球购物
全球销量第一生发产品:Viviscal
2017/12/21 全球购物
TobyDeals美国:在电子产品上获得最好的优惠和折扣
2019/08/11 全球购物
网络工程师的自我评价
2013/10/02 职场文书
高中生思想道德自我评价
2015/03/09 职场文书
2015年文秘个人工作总结
2015/10/14 职场文书
2016年第二十五次全国助残日活动总结
2016/04/01 职场文书
如何在Python项目中引入日志
2021/05/31 Python
create-react-app开发常用配置教程
2022/06/25 Javascript