# 抓取豆瓣圖片
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)# 創(chuàng)建目錄
# 生成唯一文件名
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("獲取圖片操作完成")