python下载图片、已知url_python小练——下载指定url中的图片

#coding=gbk

#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))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值