0

我正在尝试使用 html URL 获取多个图像,但每次调用它都附加到它已经解析的图像列表中

from HTMLParser import HTMLParser

class MyHTMLParser(HTMLParser):
    images = []
    def handle_starttag(self, tag, attrs):
        if tag == "a":
            for attr in attrs:
                if attr[0] == "href" and attr[1].startswith("image"):
                    self.images.append(attr[1])


def get_sysimage(url):
    response = urllib2.urlopen(url)
    html = response.read()
    parser = MyHTMLParser()
    parser.feed(html)
    images = parser.images
    print images

for url in urllist:
    get_sysimage(url)

我究竟做错了什么?

4

1 回答 1

0

您已将其定义images为类级变量,因此它与解析器的所有实例共享。试试这个:

class MyHTMLParser(HTMLParser):

    def __init__(self, *args, **kwargs):
        super(MyHTMLParser, self).__init__(*args, **kwargs)
        self.images = []

images这将在创建实例时为每个实例创建一个新的独立列表。

于 2013-08-16T21:56:37.463 回答