我使用Python HTMLParser从各种网页中获取数据,效果很好,除了in one page之外,我还可以获取具有以下属性的内容:
data-diffusion-title=""Soigner des gens ça rend malade""
问题在于它包含编码的引号字符,该字符被视为属性的结尾。所以不用:
name=data-diffusion-title
value="Soigner des gens ça rend malade"
我得到多个名称/值(值全为空):
name=data-diffusion-title
value=
name=Soigner
value=
name=des
value=
name=gens
value=
name=ça
value=
name=rend
value=
name=malade""
value=
如何在不让HTMLParser将编码的引号字符解释为引号的情况下获取full属性?
编辑:添加代码
class ExtractShowDataHTMLParser(HTMLParser):
'''Extract shows data from the HTML extracted in ExtractShowsHTMLParser()
'''
def __init__(self):
HTMLParser.__init__(self)
self.title = ""
self.show_url = ""
self.show_date = None
self.show_link_mp3 = ""
self.show_id = ""
def handle_starttag(self, tag, attrs):
if 'button' == tag:
for name, value in attrs:
if 'data-diffusion-title' == name:
self.title = value
elif 'data-diffusion-path' == name:
self.show_url = value
elif 'data-url' == name:
self.show_link_mp3 = value
elif 'data-xiti-id' == name:
self.show_id = value
def handle_endtag(self, tag):
pass
def handle_data(self, data):
pass
def get_show_title(self):
return self.title
def get_show_url(self):
return self.show_url
def get_show_date(self):
return self.show_date
def get_show_audio_link(self):
return self.show_link_mp3
def get_show_id(self):
return self.show_id
show_parser = ExtractShowDataHTMLParser()
show_parser.feed(show)