@myles
2017-04-13T08:39:47.000000Z
字数 3641
阅读 2641
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.0
import requests
import re
import os,sys
# 1.定义HTML源码下载(通用代码框架)
def getHTMLText(_url):
try:
r = requests.get(_url,timeout=30)
r.raise_for_status()
r.encoding =r.apparent_encoding
return r.text
except:
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.jpg
for 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 = 1
for 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下载完成,将继续下一张图片下载...
脚本运行效果图
第三方图片存放网站:贴图库