从HTMLParser类获取返回值到主类

时间:2014-02-12 08:20:39

标签: python html python-2.7 html-parsing href

这是我目前的代码:

HTMLParser类:

class MyHTMLParser(HTMLParser):
    def handle_starttag(self, tag, attrs):
        if tag == "a":
            for name, value in attrs:
                if name == "href":
                    print value

主要课程:

html = urllib2.urlopen(url).read()
MyHTMLParser().feed(html)

TODO: 制造“价值”的任何想法都可以回归主类? 感谢提前。

1 个答案:

答案 0 :(得分:1)

您要在解析器实例上存储要收集的信息:

class MyHTMLParser(HTMLParser):
    def __init__(self):
         HTMLParser.__init__()
         self.links = []

    def handle_starttag(self, tag, attrs):
        if tag == "a" and 'href' in attrs:
            self.links.append(attrs['href'])

然后在您将HTML提供给解析器之后,您可以从实例中检索links属性

parser = MyHTMLParser()
parser.feed(html)
print parser.links

对于解析HTML,我衷心建议您改为BeautifulSoup

from bs4 import BeautifulSoup

soup = BeautifulSoup(html)
links = [a['href'] for a in soup.find_all('a', href=True)]