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 文件读写操作实例详解
Mar 12 Python
浅析Python中的getattr(),setattr(),delattr(),hasattr()
Jun 14 Python
python生成词云的实现方法(推荐)
Jun 13 Python
django使用html模板减少代码代码解析
Dec 12 Python
Python tkinter事件高级用法实例
Jan 31 Python
mac下给python3安装requests库和scrapy库的实例
Jun 13 Python
解决Python 使用h5py加载文件,看不到keys()的问题
Feb 08 Python
python实现列表中最大最小值输出的示例
Jul 09 Python
python 寻找离散序列极值点的方法
Jul 10 Python
基于Python批量生成指定尺寸缩略图代码实例
Nov 20 Python
Django对接支付宝实现支付宝充值金币功能示例
Dec 17 Python
Python通过zookeeper实现分布式服务代码解析
Jul 22 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获取随机数字和字母的方法详解
2013/06/06 PHP
php文件上传的简单实例
2013/10/19 PHP
PHP在弹框中获取foreach中遍历的id值并传递给地址栏
2017/06/13 PHP
PHP的cookie与session原理及用法详解
2019/09/27 PHP
Laravel 添加多语言提示信息的方法
2019/09/29 PHP
php设计模式之组合模式实例详解【星际争霸游戏案例】
2020/03/27 PHP
JavaScript类型转换方法及需要注意的问题小结(挺全面)
2010/11/11 Javascript
jquery.validate分组验证代码
2011/03/17 Javascript
博客侧边栏模块跟随滚动条滑动固定效果的实现方法(js+jquery等)
2013/03/24 Javascript
Jquery搜索父元素操作方法
2015/02/10 Javascript
js鼠标滑过图片震动特效的方法
2015/02/17 Javascript
javascript实现实时输出当前的时间
2015/04/27 Javascript
javascript实现日期按月份加减
2015/05/15 Javascript
jquery实现动静态条形统计图
2015/08/17 Javascript
详解微信小程序设置底部导航栏目方法
2017/06/29 Javascript
JavaScript遍历数组的三种方法map、forEach与filter实例详解
2019/02/27 Javascript
关于微信小程序map组件z-index的层级问题分析
2019/07/09 Javascript
python搭建简易服务器分析与实现
2012/12/15 Python
简单的Python的curses库使用教程
2015/04/11 Python
Python中Django 后台自定义表单控件
2017/03/28 Python
解决python3中自定义wsgi函数,make_server函数报错的问题
2017/11/21 Python
Python爬虫的两套解析方法和四种爬虫实现过程
2018/07/20 Python
django_orm查询性能优化方法
2018/08/20 Python
python tkinter界面居中显示的方法
2018/10/11 Python
Django视图扩展类知识点详解
2019/10/25 Python
python爬取王者荣耀全皮肤的简单实现代码
2020/01/31 Python
三步解决python PermissionError: [WinError 5]拒绝访问的情况
2020/04/22 Python
python脚本监控logstash进程并邮件告警实例
2020/04/28 Python
解决CSS3 transition-delay 属性默认值0不带单位失效的问题
2020/10/29 HTML / CSS
Bjorn Borg官方网上商店:国际运动时尚品牌
2016/08/27 全球购物
化石印度尼西亚在线商店:Fossil Indonesia
2019/03/11 全球购物
超市仓管员岗位职责
2014/04/07 职场文书
祖国在我心中的演讲稿
2014/05/04 职场文书
公司捐款倡议书
2014/05/14 职场文书
2014年纳税评估工作总结
2014/12/23 职场文书
病假证明模板
2015/06/19 职场文书