2016-05-23 14 views
2

を長い間苦しんで、私は次のような形式に加工1つの入力に長い文字列を取得するために管理した後に - つのリスト:どのように私は今、効率的にすることができますのpython - タグを抽出し、HTMLから属性 - ハードな方法

['<', 'p', '>', '<', 'a', 'href', '>', '<', 'a', '>', '<', 'p', '>', '<', 'div', 'class', '>', '<', 'a', 'href', '>', '<', 'a', '>', '<', 'div', '>'] 

をし、ハードコーディング方法のプロセスでは、各HTMLタグとそれがカバーする属性をさらに取得するようにリストされていますか?

ようにした後、私はaがのhrefがあり、divがクラス属性を持ち、任意の属性を持っていないことのp を確認しますか?

+2

'BeautifulSoup'が最初の場所ですか? – Jan

+1

私は不思議です。なぜあなたはこれをする必要がありますか? – Vorticity

+0

http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags?おそらく、手動でhtmlを解体しようとする代わりにパーサーを使用するでしょうか? –

答えて

0

ただ、学術的な課題のために、あなたが(少しStackOverflowの上this answerから採用)

your_list = ['<', 'p', '>', '<', 'a', 'href', '>', '<', 'a', '>', '<', 'p', '>', '<', 'div', 'class', '>', '<', 'a', 'href', '>', '<', 'a', '>', '<', 'div', '>'] 

for prev,cur,next in zip([None]+your_list[:-1], your_list, your_list[1:]+[None]): 
    if prev == '<' and next == '>': 
     print "%s is an empty element" % cur 

しかし、使用することができますをこれは確かにあなたの目標を達成するための最良/最速/最も安全な方法ではありません、最初にBeautifulSoupのような適切なパーサーを使用してください。言われている、a demo on ideone.com

+0

申し訳ありませんが、これは私にdivがここでは真実ではない空であることを表示します。 – JanM

+0

@JanM:最後に**最後の 'div'が正しく出力されます。これは本当に空です。 – Jan

関連する問題