def handle_starttag(self, tag, attrs):
print(attrs)
[]
为什么我的名单是空名单?标签内的数据在哪里? 我不知道为什么我的attrs是空的,我需要来自它的数据,来自handle_data或来自attrs
import urllib.request
from html.parser import HTMLParser
import sys
class myHTMLParser(HTMLParser):
def __init__(self):
HTMLParser.__init__(self)
self.country = {}
def handle_starttag(self, tag, attrs):
if tag == 'currency_name':
self.country[self.handle_data] = tag
print(self.country)
def handle_endtag(self, tag):
pass
def handle_data(self, data):
return(data.strip())
def main():
if len(sys.argv) > 1:
link = sys.argv[1]
else:
link = 'http://www.bankofcanada.ca/stats/assets/xml/noon-five-day.xml'
myparser = myHTMLParser()
file = open(link, 'r')
html = file.read()
myparser.feed(html)
file.close()
main()

答案 0 :(得分:1)
我觉得你很困惑。至少程序中的URL没有属性,但它确实有数据。属性是标签本身内部的信息。这是传递信息的一种方式。
对于您的页面,信息位于开始标记和结束标记之间。
类似<a href="mysite.org"></a>
是转移信息的一种方式。
<p>this is text</p>
是另一个。
由于没有属性,该列表为空。数据位于handle_data返回的结果中。