python实现下载指定网址所有图片的方法
作者:皮蛋 发布时间:2021-05-17 22:12:16
标签:python,下载,图片
本文实例讲述了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程序设计有所帮助。


猜你喜欢
- 1、远程登录到linux上,使用到的模块paramiko#远程登陆操作系统def ssh(sys_ip,username,password,
- 用python来自动生成excel数据文件。python处理excel文件主要是第三方模块库xlrd、xlwt、xluntils和pyExc
- Keras运行迭代一定代数以后,速度越来越慢,经检查是因为在循环迭代过程中增加了新的计算节点,导致计算节点越来越多,内存被占用完,速度变慢。
- 1. 先介绍几个常用的 MySQL 函数RAND() 随机生成 0~1 之间的小数(0<1)CEI
- python pyinstaller pyqt4 打包 QWindows最近在做课设,用pyqt设计界面。然后用pyinstaller打包程
- python时间处理月份加减第三方模块 :python-dateutil安装方式:pip install python-dateutil实例
- 我考虑到了x的所有n次的情况,下面的代码有可能是不完美的,但是肯定是对的。def aaa(x,n): A=isinstance(
- 一、获取Tensor神经网络在运算过程中实际上是以Tensor为格式进行计算的,我们只需稍稍改动一下forward函数即可从运算过程中抓到T
- 插件说明:插件根据提供的10位ISBN书号,在Amazon网站上查找该图书的详细信息。如果找到结果,则返回一个两元素的数组,其中第一个元素是
- 写入文件使用open()函数和write()函数但是有两种写法,分别是'a'和'w'。'a'
- 1.对于一维数组,可以有:2. 对于二维数组:考虑可将其看作为矩阵,故可以如下书写二重遍历 这里外层循环的是二维数组A的行,内层则
- Mysql Workbench是一款开源的数据库客户端,在IT行业这款开源的软件也是相当有名气的,很多使用musql的同仁都喜欢使用这款客户
- 区别call、apply、bind相同点:都是改变this的指向,传入的第一个参数都是绑定this的指向,在非严格模式中,如果第一个参数是n
- 国际象棋是当今国际上最流行的智力体育运动项目。青年人下棋可以锻炼思维、增强记忆力和培养坚强的意志;中年人下棋可以享受美学;老年下棋可以很好的
- 优化前后新老代码如下:from git_tools.git_tool import get_collect_projects, QQNews
- 14个超酷的js显示时间效果,一定有你想要的。正常时间显示运行效果图:<title>正常显示的时钟 - asp之家 - http
- 数据:一个db,2000个表格,2000张表格数据,每条记录30个column,平均每张表格4.3w条记录,总共86388670条记录。机器
- 前言以前版本的 Celery 需要一个单独的库(django-celery)来与 Django 一起工作,但从 3.1 开始不再是这种情况。
- 目录1、创建对象2、保存ForeignKey和ManyToManyField字段3、检索对象跨越多值的关系查询使用F表达式引用模型的字段:4
- 为什么要讲 __repr__在 Python 中,直接 print 一个实例对象,默认是输出这个对象由哪个类创建的对象,以及在内存中的地址(