My question is a simpler version of this
我有一个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),但我需要有关open标记的attr的信息。我可以在方法中打印值,但是当我尝试获取返回值时,linkCode返回'none'。
我错过了什么?谢谢!
答案 0 :(得分:4)
feed()
方法无法返回任何内容 - 这就是您获得None
的原因。相反,请在调用data
后阅读feed()
属性的值:
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