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 02 Python
python通过getopt模块如何获取执行的命令参数详解
Dec 29 Python
python SMTP实现发送带附件电子邮件
May 22 Python
python矩阵转换为一维数组的实例
Jun 05 Python
python求解数组中两个字符串的最小距离
Sep 27 Python
transform python环境快速配置方法
Sep 27 Python
pyinstaller打包单个exe后无法执行错误的解决方法
Jun 21 Python
Pandas DataFrame数据的更改、插入新增的列和行的方法
Jun 25 Python
python求绝对值的三种方法小结
Dec 04 Python
详解python破解zip文件密码的方法
Jan 13 Python
如何在keras中添加自己的优化器(如adam等)
Jun 19 Python
python3.7 openpyxl 在excel单元格中写入数据实例
Sep 01 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重定向的3种方式
2013/03/07 PHP
国外十大最流行的PHP框架排名
2013/07/04 PHP
php多种形式发送邮件(mail qmail邮件系统 phpmailer类)
2014/01/22 PHP
ThinkPHP添加更新标签的方法
2014/12/05 PHP
php简单创建zip压缩文件的方法
2016/04/30 PHP
php对接java现实加签验签的实例
2016/11/25 PHP
详解php 使用Callable Closure强制指定回调类型
2017/10/26 PHP
PHP删除数组中指定值的元素常用方法实例分析【4种方法】
2018/08/21 PHP
php workerman定时任务的实现代码
2018/12/23 PHP
对php 判断http还是https,以及获得当前url的方法详解
2019/01/15 PHP
tp5框架基于ajax实现异步删除图片的方法示例
2020/02/10 PHP
Prototype Function对象 学习
2009/07/12 Javascript
基于JQuery制作的产品广告效果
2010/12/08 Javascript
JavaScript运行机制之事件循环(Event Loop)详解
2014/10/10 Javascript
基于jQuery实现仿微博发布框字数提示
2016/07/27 Javascript
AngularJS 作用域详解及示例代码
2016/08/17 Javascript
js获取json中key所对应的value值的简单方法
2020/06/17 Javascript
JavaScript实现三级联动效果
2017/07/15 Javascript
Vue实现typeahead组件功能(非常靠谱)
2017/08/26 Javascript
微信小程序获取手机网络状态的方法【附源码下载】
2017/12/08 Javascript
vue项目中应用ueditor自定义上传按钮功能
2018/04/27 Javascript
electron-vue利用webpack打包实现多页面的入口文件问题
2019/05/12 Javascript
基于layui的table插件进行复选框联动功能的实现方法
2019/09/19 Javascript
vue之封装多个组件调用同一接口的案例
2020/08/11 Javascript
JS数组索引检测中的数据类型问题详解
2021/01/11 Javascript
[01:39](回顾)各路豪强针锋相对,几经鏖战四强产生
2014/07/01 DOTA
python抓取网页中的图片示例
2014/02/28 Python
Python3实现的简单工资管理系统示例
2019/03/12 Python
pandas通过字典生成dataframe的方法步骤
2019/07/23 Python
Django的Modelforms用法简介
2019/07/27 Python
HTML5的表单(绝对特别强大的功能)使用示例
2013/06/20 HTML / CSS
先进个人事迹材料
2014/01/25 职场文书
八荣八耻的活动方案
2014/08/16 职场文书
开展党的群众路线教育实践活动工作总结
2014/11/05 职场文书
应届毕业生求职信范文
2015/03/19 职场文书
openstack中的rpc远程调用的方法
2021/07/09 Python