3

Web サイトからデータを抽出するために、Python で HTMLParser を使い始めました。HTML の 2 つのタグ内のテキストを除いて、必要なものはすべて取得できます。HTML タグの例を次に示します。

<a href="http://wold.livingsources.org/vocabulary/1" title="Swahili" class="Vocabulary">Swahili</a>

から始まるタグは他にもあります。それらには他の属性と値があるため、それらのデータは必要ありません。

<a href="http://wold.livingsources.org/contributor#schadebergthilo" title="Thilo Schadeberg" class="Contributor">Thilo Schadeberg</a>

タグは、テーブル内に埋め込まれたタグです。これが他のタグとの違いを生むかどうかはわかりません。属性 class="Vocabulary" を持つ「a」というタグの一部の情報のみが必要で、タグ内のデータが必要です。例では「スワヒリ語」になります。だから私がしたことは:

class AllLanguages(HTMLParser):
    '''
    classdocs
    '''
    #counter for the languages
    #countLanguages = 0
    def __init__(self):
        HTMLParser.__init__(self)
        self.inLink = False
        self.dataArray = []
        self.countLanguages = 0
        self.lasttag = None
        self.lastname = None
        self.lastvalue = None
        #self.text = ""


    def handle_starttag(self, tag, attr):
        #print "Encountered a start tag:", tag      
        if tag == 'a':
            for name, value in attr:
                if name == 'class' and value == 'Vocabulary':
                    self.countLanguages += 1
                    self.inLink = True
                    self.lasttag = tag
                    #self.lastname = name
                    #self.lastvalue = value
                    print self.lasttag
                    #print self.lastname
                    #print self.lastvalue
                    #return tag
                    print self.countLanguages




    def handle_endtag(self, tag):
        if tag == "a":
            self.inlink = False
            #print "".join(self.data)

    def handle_data(self, data):
        if self.lasttag == 'a' and self.inLink and data.strip():
            #self.dataArray.append(data)
            #
            print data

プログラムはタグに含まれるすべてのデータを出力しますが、タグに含まれる適切な属性のデータのみが必要です。この特定のデータを取得するにはどうすればよいですか?

4

2 に答える 2