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的Django框架中获取单个对象数据的简单方法
Jul 17 Python
python 删除大文件中的某一行(最有效率的方法)
Aug 19 Python
浅谈python中列表、字符串、字典的常用操作
Sep 19 Python
python机器学习之神经网络(二)
Dec 20 Python
python3实现公众号每日定时发送日报和图片
Feb 24 Python
python3 读取Excel表格中的数据
Oct 16 Python
Python minidom模块用法示例【DOM写入和解析XML】
Mar 25 Python
python的turtle库使用详解
May 10 Python
python自动化之Ansible的安装教程
Jun 13 Python
基于Django静态资源部署404的解决方法
Jul 28 Python
Django def clean()函数对表单中的数据进行验证操作
Jul 09 Python
Python可视化学习之seaborn绘制矩阵图详解
Feb 24 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/05/15 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十)
2014/06/24 PHP
PHP向socket服务器收发数据的方法
2015/01/24 PHP
yii数据库的查询方法
2015/12/28 PHP
PHP获取网页所有连接的方法(附demo源码下载)
2016/03/30 PHP
PHP实现适用于自定义的验证码类
2016/06/15 PHP
PHP通过文件保存和更新信息的方法分析
2019/09/12 PHP
一段效率很高的for循环语句使用方法
2007/08/13 Javascript
clientX,pageX,offsetX,x,layerX,screenX,offsetLeft区别分析
2010/03/12 Javascript
jQuery EasyUI API 中文文档 - ComboTree组合树
2011/10/11 Javascript
JQuery报错Uncaught TypeError: Illegal invocation的处理方法
2015/03/13 Javascript
JS中多步骤多分步的StepJump组件实例详解
2016/04/01 Javascript
javaScript事件机制兼容【详细整理】
2016/07/23 Javascript
关于javascript的一些知识以及循环详解
2016/09/12 Javascript
Angular4学习笔记之准备和环境搭建项目
2017/08/01 Javascript
Vue+Element实现动态生成新表单并添加验证功能
2019/05/23 Javascript
纯js+css实现在线时钟
2020/08/18 Javascript
JS实现京东商品分类侧边栏
2020/12/11 Javascript
python实现的一只从百度开始不断搜索的小爬虫
2013/08/13 Python
python 执行shell命令并将结果保存的实例
2018/05/11 Python
pycharm远程linux开发和调试代码的方法
2018/07/17 Python
python 划分数据集为训练集和测试集的方法
2018/12/11 Python
python模糊图片过滤的方法
2018/12/14 Python
python 在threading中如何处理主进程和子线程的关系
2020/04/25 Python
使用Python将语音转换为文本的方法
2020/08/10 Python
详解python算法常用技巧与内置库
2020/10/17 Python
网站域名和主机:Domain.com
2019/04/01 全球购物
函授毕业生自我鉴定
2013/11/06 职场文书
产品售后服务承诺书
2014/05/21 职场文书
跳蚤市场口号
2014/06/13 职场文书
党员对照检查材料
2014/09/22 职场文书
党政领导班子群众路线对照检查材料
2014/10/26 职场文书
个人总结格式范文
2015/03/09 职场文书
干部外出学习心得体会
2016/01/18 职场文书
深度学习tensorflow基础mnist
2021/04/14 Python
python实现双向链表原理
2022/05/25 Python