# 抓取豆瓣图片
import urllib.request
from html.parserimport HTMLParser
import re
import os
import shutil
import time
#设置url和存储路径
url ="http://www.douban.com/"
filePath ="D:\\temp"
# 读取HTML
urlContent = urllib.request.urlopen(url);
data =str(urlContent.read())
# 初始化文件目录
if os.path.isdir(filePath):
shutil.rmtree(filePath)# 递归删除目录树
elif os.path.isfile(filePath):
os.remove(filePath)# 删除文件
os.makedirs(filePath)# 创建目录
# 生成唯一文件名
intFlag =0
def getTimeStr():
global intFlag
intFlag = intFlag +1
return time.strftime("%H%M%S") +str(intFlag)
# 解析HTML
# HTMLParser方式解析,这里HTMLParser类似于抽象类
class MyHtmlParser(HTMLParser):
def handle_starttag(self, tag, attrs):
'获取 img标签'
if tag =="img":
for imageUrlin attrs:
'获取src属性'
print(imageUrl)
if imageUrl[0] =='src':
imageUrl = imageUrl[1]
#print(imageUrl)
imageUrl = re.sub("[\\\\']","", imageUrl)
iamgeUrlArr = imageUrl.split("/")
#print(iamgeUrlArr)
imgFilePath = iamgeUrlArr[len(iamgeUrlArr) -1]
#print("len(iamgeUrlArr)={0}, imgFilePath={1}".format(len(iamgeUrlArr), imgFilePath))
try:
imgData = urllib.request.urlopen(imageUrl).read()
imgFilePath = filePath + os.sep + imgFilePath + getTimeStr() +".jpg"
imageFile =open(imgFilePath,"wb")
imageFile.write(imgData)
imageFile.close()
print("下载文件", imageUrl,"成功,另存路径:" + imgFilePath)
except:
print("****下载文件 ", imageUrl," 出错:")
# 调用抓取图片的API进行抓取
parser = MyHtmlParser()
# 解析HTML
parser.feed(data)
print("获取图片操作完成")