python实现下载指定网址所有图片的方法

作者:皮蛋 时间:2021-05-17 22:12:16 

本文实例讲述了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,下载,图片
0
投稿

猜你喜欢

  • 删除select中所有option选项jquery代码

    2024-04-22 12:58:42
  • python检查URL是否正常访问的小技巧

    2022-02-23 09:23:56
  • Python随手笔记之标准类型内建函数

    2022-10-23 11:00:45
  • python开发简易版在线音乐播放器

    2022-08-29 14:38:29
  • Python类的动态修改的实例方法

    2021-07-03 12:16:15
  • go语言实现猜数字小游戏的方法

    2024-02-12 11:47:18
  • python中实现字符串翻转的方法

    2021-06-08 04:27:59
  • MySQL 数据库语句优化的原则

    2010-01-20 10:11:00
  • 详解用node-images 打造简易图片服务器

    2024-05-11 10:13:23
  • 浅谈vue父子组件怎么传值

    2024-05-09 15:16:15
  • asp 小偷采集程序原理与常用函数方法

    2011-03-06 10:36:00
  • Django 实现Admin自动填充当前用户的示例代码

    2021-12-23 17:37:26
  • python 动态规划问题解析(背包问题和最长公共子串)

    2021-01-21 14:17:24
  • selenium+python自动化78-autoit参数化与批量上传功能的实现

    2023-11-02 01:24:57
  • Python 25行代码实现的RSA算法详解

    2023-04-06 17:05:58
  • Python装饰器用法与知识点小结

    2023-11-16 00:45:02
  • 分析Python编程时利用wxPython来支持多线程的方法

    2021-03-09 12:02:57
  • Centos 7 安装mysql5.7.24二进制 版本的方法及解决办法

    2024-01-21 22:18:58
  • django认证系统 Authentication使用详解

    2021-10-02 19:05:07
  • SQL Server数据库连接查询的种类及其应用

    2009-01-06 11:28:00
  • asp之家 网络编程 m.aspxhome.com