使用HTMLParser获取带引号的属性

时间:2018-07-27 15:31:28

标签: python quotes html-parser

我使用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)

0 个答案:

没有答案