McP*_*dr0 4 html python parsing class
我有一个 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)
Run Code Online (Sandbox Code Playgroud)
我发现的示例使用 handle_data(self, data),但我需要有关 open 标记的 attr 的信息。我可以打印方法中的值,但是当我尝试获取返回值时,linkCode 返回“none”。
我错过了什么?谢谢!
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
Run Code Online (Sandbox Code Playgroud)
印刷:
fY9UhIxitYM
Run Code Online (Sandbox Code Playgroud)