从HTMLParser的handle_starttag返回数据
我有一个YouTube的iframe:
<iframe width="560" height="315" src="//www.youtube.com/embed/fY9UhIxitYM" frameborder="0" allowfullscreen></iframe>
我正在做一个小的网页应用,需要提取这个随机代码(在这个例子中是fY9UhIxitYM)。我想使用标准库,而不是导入Beautiful Soup。
from HTMLParser import HTMLParser
class YoutubeLinkParser(HTMLParser):
def __init__(self):
HTMLParser.__init__(self)
self.data = []
def handle_starttag(self, tag, attrs):
data = attrs[2][1].split('/')[-1]
self.data.append(data)
iframe = open('iframe.html').read()
parser = YoutubeLinkParser()
linkCode = parser.feed(iframe)
我找到的例子使用了handle_data(self, data),但是我需要的是打开标签的属性信息。我可以在这个方法里打印出值,但当我尝试获取返回值时,linkCode却返回'none'。
我缺少了什么呢?谢谢!
1 个回答
7
feed()
方法不返回任何东西,这就是你得到 None
的原因。相反,你应该在调用 feed()
之后,查看 data
属性的值:
from HTMLParser import HTMLParser
class YoutubeLinkParser(HTMLParser):
def handle_starttag(self, tag, attrs):
self.data = attrs[2][1].split('/')[-1]
iframe = open('iframe.html').read()
parser = YoutubeLinkParser()
parser.feed(iframe)
print parser.data
打印结果:
fY9UhIxitYM