Heim >Backend-Entwicklung >Python-Tutorial >Python ruft Website-Bilder ab

Python ruft Website-Bilder ab

巴扎黑
巴扎黑Original
2016-12-09 11:27:561272Durchsuche

# zhouxianglh 2013.05.03 python3.3
import urllib.request
from html.parser import HTMLParser
import re
import os
import shutil
import time
url = "http://www.douban.com/"
filePath = "D:\\temp"
# 读也HTML
urlContent = urllib.request.urlopen(url);
data = str(urlContent.read())
# 初始化文件目录
if  os.path.isdir(filePath):
#     os.removedirs(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 imageUrl in attrs:
                '获取src属性'
                if imageUrl[0] == 'src':
                    imageUrl = imageUrl[1]
                    imageUrl = re.sub("[\\\\']", "", imageUrl)
                    iamgeUrlArr = imageUrl.split("/")
                    imgFilePath = iamgeUrlArr[len(iamgeUrlArr) - 1]
                    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, " 出错:")
parser = MyHtmlParser()
# 解析HTML
parser.feed(data)
print("获取图片操作完成")

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn