urllib中urlparse使用技巧以及iter_content图片边下边存到硬盘使用

import os,requests
from urllib.parse import urlparse

# 如果获取的链接地址如下,但是我们只想要问号前面的怎么处理
url  = 'http://i2.chuimg.com/657f715d4ba2439e91e9e67f1c7026b9_1125w_1488h.jpg?imageView2/1/w/215/h/136/interlace/1/q/90'
# 以下网址为多层级目录情况
# url  = 'https://s.chuimg.com/simpleicons/twitter.svg'
html = urlparse(url)
# ParseResult(scheme='http', netloc='i2.chuimg.com',
# path='/657f715d4ba2439e91e9e67f1c7026b9_1125w_1488h.jpg',
#  params='', query='imageView2/1/w/215/h/136/interlace/1/q/90', fragment='')
print(html)
full_url = '%s://%s%s'%(html.scheme,html.netloc,html.path)
print(full_url) # http://i2.chuimg.com/657f715d4ba2439e91e9e67f1c7026b9_1125w_1488h.jpg
# 图片名字
file_name = html.path[1:]
print(file_name) # 657f715d4ba2439e91e9e67f1c7026b9_1125w_1488h.jpg
resp = requests.get(full_url)
# 初始化下载图片目录
image_dir = os.path.join(os.curdir,'images')
print(image_dir) # .\images
file_path = os.path.join(image_dir,file_name)
print(file_path) # .\images\657f715d4ba2439e91e9e67f1c7026b9_1125w_1488h.jpg
file_menu = os.path.dirname(file_path)
print(file_menu) #去掉文件名,返回目录 .\images
# makedirs可以创建多级目录,例如:.\images\simpleicons
# 而mkdir只能创建一级目录
if not os.path.isdir(file_menu):
    os.makedirs(file_menu)
with open(file_path,'wb')as f:
    # 边下边存到硬盘,默认requests是下载到内存中,最后再存到硬盘
    for funk in resp.iter_content(1024):
        f.write(funk)

 

你可能感兴趣的:(os,requests,urllib,urllib,python)