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通过BF算法实现关键词匹配的方法
Mar 13 Python
浅谈python为什么不需要三目运算符和switch
Jun 17 Python
将python代码和注释分离的方法
Apr 21 Python
Python 循环语句之 while,for语句详解
Apr 23 Python
使用 Python 实现微信群友统计器的思路详解
Sep 26 Python
opencv转换颜色空间更改图片背景
Aug 20 Python
python 矢量数据转栅格数据代码实例
Sep 30 Python
python tqdm 实现滚动条不上下滚动代码(保持一行内滚动)
Feb 19 Python
对django 2.x版本中models.ForeignKey()外键说明介绍
Mar 30 Python
解决django migrate报错ORA-02000: missing ALWAYS keyword
Jul 02 Python
python动态规划算法实例详解
Nov 22 Python
Python图像处理之图像拼接
Apr 28 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获得当前的脚本网址
2007/12/10 PHP
Yii入门教程之Yii安装及hello world
2014/11/25 PHP
php获取图片信息的方法详解
2015/12/10 PHP
WordPress中用于获取及自定义头像图片的PHP脚本详解
2015/12/17 PHP
PHP foreach遍历多维数组实现方式
2016/11/16 PHP
PHP时间处理类操作示例
2018/09/05 PHP
Thinkphp页面跳转设置跳转等待时间的操作
2019/10/16 PHP
jquery插件开发注意事项小结
2013/06/04 Javascript
js控制表单操作的常用代码小结
2013/08/15 Javascript
编写js扩展方法判断一个数组中是否包含某个元素
2013/11/08 Javascript
深入理解javascript动态插入技术
2013/11/12 Javascript
用正则表达式替换图片地址img标签
2013/11/22 Javascript
jquery插件tooltipv顶部淡入淡出效果使用示例
2013/12/05 Javascript
EasyUI实现二级页面的内容勾选的方法
2015/03/01 Javascript
gulp加批处理(.bat)实现ng多应用一键自动化构建
2017/02/16 Javascript
axios简单实现小程序延时loading指示
2018/07/30 Javascript
nodejs高大上的部署方式(PM2)
2018/09/11 NodeJs
在JS循环中使用async/await的方法
2018/10/12 Javascript
微信小程序实现搜索指定景点周边美食、酒店
2019/05/18 Javascript
详解用async/await来处理异步
2019/08/28 Javascript
js操作两个json数组合并、去重,以及删除某一项元素
2020/09/22 Javascript
OpenLayers3加载常用控件使用方法详解
2020/09/25 Javascript
利用python实现xml与数据库读取转换的方法
2017/06/17 Python
浅析Python四种数据类型
2018/09/26 Python
Django实现基于类的分页功能
2019/10/31 Python
Python列表切片常用操作实例解析
2019/12/16 Python
Win系统PyQt5安装和使用教程
2019/12/25 Python
Python列表如何更新值
2020/05/27 Python
CSS3打造磨砂玻璃背景效果
2016/09/28 HTML / CSS
毕业自我鉴定书
2014/03/24 职场文书
贷款委托书范本
2014/04/08 职场文书
安全协议书范本
2014/04/21 职场文书
仲裁协议书
2014/09/26 职场文书
预备党员群众路线思想汇报2014
2014/10/25 职场文书
工程技术员岗位职责
2015/04/11 职场文书
学校世界艾滋病日宣传活动总结
2015/05/05 职场文书