2011-08-10 4 views
0

私はPythonにあるHTMLParserモジュールを使用して、HTMLページをHTMLParserで解析してテーブルにデータを出力しています。私はテーブルの空のフィールドを印刷することができません。テーブルにある空のデータをHTMLコードから印刷するにはどうすればいいですか?

class MyParser(HTMLParser): 
    def __init__(self, data): 
     HTMLParser.__init__(self) 
     self.feed(data) 
    def handle_data(self, data): 
     print "result -->", data 

m = MyParser("""<p>105</p><p></p>""") 

結果 - > 105

私は最初のタグ<p>105</p>の間でデータを印刷することができる午前:ここ

は、私が使用しているコードです。私は2番目のタグ <p></p>の間に存在する空のデータを印刷したいと思います。どうすればいいのですか?

HTMLPAGE = """<p>105</p></td><td style="width:50px; word-wrap: break-word;"><p style="width: 8em; padding-left: 0px; padding-right: 0px; margin: 0pt;"></p></td><td style="width:50px; word-wrap: break-word;">""" 

データを空の文字列( "")として印刷します。 ?任意の助け..

+0

印刷するものがない場合は、何を印刷しますか? – Keith

+1

もっと重要なことは、何も印刷されていないときに何を印刷するのですか? – bdeniker

+0

名前としてhandle_dataは、データを処理する関数であることを示唆しています。データがない場合は呼び出されません。あなたはこれまでに 'data:do_something'を使ったことがありますか?私たちがデータを持っているかどうかを確認することです:) –

答えて

0

さて、あなたは本当にこれを必要とする場合、handle_endtagを使用してみてください:

class MyParser(HTMLParser): 
    def __init__(self, data): 
     HTMLParser.__init__(self) 
     self.data = "" 
     self.feed(data) 
    def handle_data(self, data): 
     self.data = data 
    def handle_endtag(self, tag, attrs): 
     print "result -->", self.data 
     self.data = "" 

m = MyParser("""<p>105</p><p></p>""") 

たびにタグが終了する。この方法で、あなたは内部にあったデータを印刷します。ただし、<p><p></p></p>は、すべてのタグが終了する前に「空のデータ」として2回処理されます。これがあなたに必要なものに近い場合(ただし正確ではない場合)、handle_starttagを使用して時間を費やしてください。そうすれば、あなたのコードはあなたが望むように動作することができます。

関連する問題