@myles
2017-04-13T08:39:47.000000Z
字数 3641
阅读 2767
python正则匹配目标:下载淘宝某页面的所有图片
目标URL:https://shouji.tmall.com/?spm=875.7931836
<a href="//detail.tmall.com/item.htm?acm=lb-zebra-164656-978614.1003.4.845135&id=547561600523&scm=1003.4.lb-zebra-164656-978614.ITEM_547561600523_845135" class="mod-g-photo"><img src="//g.alicdn.com/s.gif"data-lazyload-src="//img.alicdn.com/imgextra/i3/1677335387/TB22hPmkR8lpuFjy0FnXXcZyXXa_!!1677335387.jpg"alt="4月6日 努比亚 Z17mini"/></a>
<img src="//g.alicdn.com/s.gif"data-lazyload-src="//img.alicdn.com/imgextra/i3/1677335387/TB22hPmkR8lpuFjy0FnXXcZyXXa_!!1677335387.jpg"
regex = re.compile(r'img.alicdn.com.*\.jpg')
#!/usr/bin/env python# -*- coding: utf-8 -*-# @Date : 2017-04-09 13:11:08# @Author : myles# @Version : Version1.0import requestsimport reimport os,sys
# 1.定义HTML源码下载(通用代码框架)def getHTMLText(_url):try:r = requests.get(_url,timeout=30)r.raise_for_status()r.encoding =r.apparent_encodingreturn r.textexcept:return "Download HTMLText Error..."
# 2.使用re正则进行手机图片链接的获取,并存入空列表中def getLINKList(_html,_linklist):regex = re.compile(r'//img\.alicdn\.com.*\.jpg') #此处的正则需要根据实际情况来定义lklist = regex.findall(_html) #获取到的图片链接格式没http协议头://img.alicdn.com/tps/TB1VonlNXXXXXbEXFXXXXXXXXXX-160-100.jpgfor lk in lklist:link = "http:" + lk #给每一个图片链接添加“http:”的协议头._linklist.append(link)return _linklist
return root_dir_path
# 3. 检查和创建图片存放目录root_dir_path (可以作为目录创建的“通用代码框架”来使用了.)def MakeRoor_dir_path(_root_dir):root = os.getcwd()root_dir_path = root + "/" + _root_dir + "/"if not os.path.exists(root_dir_path):os.mkdir(root_dir_path)print("图片存放目录{}创建成功,接下来将进行图片的下载...".format(root_dir_path))else:print("图片存放目录{}已经存在,接下来将继续进行图片的下载...".format(root_dir_path))return root_dir_path
# 4.图片下载def DowanloadPic(_linklist,_root_dir_path):x = 1for link in _linklist:full_path = _root_dir_path + str(x) + ".jpg"if not os.path.exists(full_path):with open(full_path, 'wb') as file:r = requests.get(link)file.write(r.content)file.close()print("第{}张图片:{}下载完成,将继续下一张图片下载...\n".format(x,link.split('/')[-1]))x += 1
# 5.定义主函数def main():url = "https://shouji.tmall.com/?spm=875.7931836"lst = []root_dir = input("请输入图片存放目录,如tmp:") #输入图片存放目录名称.html = getHTMLText(url)linklist = getLINKList(html,lst) #获取图片链接列表 linklist#for link in linklist:# print("{}\n\t".format(link))root_dir_path = MakeRoor_dir_path(root_dir)DowanloadPic(linklist,root_dir_path)# 调用主函数main()
请输入图片存放目录,如:>>>
PIC
图片存放目录C:\Users\Administrator\Desktop\123/PIC/创建成功,接下来将进行图片的下载...
第1张图片:TB1RAVjQFXXXXXNXXXXSutbFXXX.jpg下载完成,将继续下一张图片下载...
第2张图片:TB19VgtQpXXXXceXpXXXXXXXXXX-1190-300.jpg下载完成,将继续下一张图片下载...
第3张图片:TB1xyn6QpXXXXabXFXXSutbFXXX.jpg下载完成,将继续下一张图片下载...
第4张图片:TB1Yc63QpXXXXccXVXXSutbFXXX.jpg下载完成,将继续下一张图片下载...
第5张图片:TB2Budxl4hmpuFjSZFyXXcLdFXa-2043230365.jpg下载完成,将继续下一张图片下载...
第6张图片:TB2E8cokrBnpuFjSZFGXXX51pXa-883737303.jpg下载完成,将继续下一张图片下载...
第7张图片:TB22hPmkR8lpuFjy0FnXXcZyXXa_!!1677335387.jpg下载完成,将继续下一张图片下载...
第8张图片:TB2tqhZj0BopuFjSZPcXXc9EpXa_!!901409638.jpg下载完成,将继续下一张图片下载...
第9张图片:TB2Qv88hHFkpuFjy1XcXXclapXa_!!2838892713.jpg下载完成,将继续下一张图片下载...
第10张图片:TB2esmVkShlpuFjSspkXXa1ApXa_!!901409638.jpg下载完成,将继续下一张图片下载...
脚本运行效果图

第三方图片存放网站:贴图库