本文介绍如何使用Python的urllib.parse模块解析URL,提取并去除查询参数,仅保留URL的基本部分。同时,演示了如何利用requests库下载图片,并保存到本地指定目录。文章还包含了处理多级目录和创建目录结构的代码示例。
- 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)