0

我正在编写一个给定 http 地址的小程序,它会找到并下载其中的图像。我现在的情况是这样的:

import urllib2, html

class HTMLNode(object):
    def __init__(self,tag,attr,content,closed=True):
        self.tag = tag
        self.attr = attr
        self.content = content
        self.closed = closed

    def istext(self):
        return self.tag == '_text_'

    def tostring(self):
        if self.istext(): 
            return self.content
        ret = '<'+self.tag
        for k, v in self.attr.items():
            ret += ' '+k+'="'+v+'"'
        ret += '>'
        if self.closed:
            for c in self.content:
                ret += c.tostring()
            ret += '</'+self.tag+'>'
        return ret

    def find_by_tag(self,tag):
            ret = []
            if self.tag == tag: ret += [self]
            if not self.istext():
                for c in self.content:
                    ret += c.find_by_tag(tag)
            return ret

def imagegrab(url):
    req = urllib2.Request(url)
    response = urllib2.urlopen(req)
    output = open(url, 'wb')
    output.write(response.read())

缺少的链接正在寻找一种使用 HTMLNode 类的“find_by_tag”功能的方法,以便程序扫描“”标签并从网站下载图片。有人可以帮我吗?

4

1 回答 1

2

其他人已经为您完成了这项工作。具体来说,看一下BeautifulSoup,它是 Python 的 HTML 解析库。你会做

soup = bs4.BeautifulSoup(...)
for img in soup("img"):
    print img.src

或类似的;显然图书馆比这更强大。

您还可以考虑使用requests,它是 urllib 系列库的包装器,具有非常简单的 API。为此你会做

soup = bs4.BeautifulSoup(requests.get(url).text)
于 2013-01-09T08:30:20.853 回答