2012-05-09 5 views
2

は、私は美しいスープに</p> <p>を使用して、リスト内の各項目の名前を保存するようbeautifulsoupとPython

<item name=bread weight="5" edible="yes"> 
<body> some blah </body> 
<item> 

<item name=eggs weight="5" edible="yes"> 
<body> some blah </body> 
<item> 

<item name=meat weight="5" edible="yes"> 
<body> some blah </body> 
<item> 

をタグ情報を、私はいくつかのXMLを持っていると言う抽出すると、ここでは、これまでの試みです:

names =list() 

for c in soup.findAll("item"): 
    #get name from the tag 
     names.append(name i got from tag) 

この方法は、タグ間でテキストを抽出するために完全に機能しています。

私はリンクを抽出するために使用されたメソッドをコピーしようとしました<a href="www.blah.com">しかし、それは動作していないようです。

リストに名前情報を保存するにはどうすればよいですか? (他のリストには本文のテキストが含まれているため、索引の一貫性が必要です。名前を取得する

どうもありがとうございました

答えて

2

使用dict(item.attrs).get('name')

<item>は終了タグと考えられていますが、開始タグであるため、3つではなく6つの一致が得られます。テキストを制御できる場合は、終了タグを使用してください。ここで

が意図したとおりに機能フル抜粋です:

names = list() 

for item in soup.findAll('item'): 
    name = dict(item.attrs).get('name') 
    if name is not None: 
     names.append(name) 
+0

こんにちはヘルプ@bossylobsterに感謝: 。:「名前がNoneでない場合は、」それはで終了タグを入れないタイプミスでしたが、私は省略することができます 名前[0]を印刷しようとすると、「none」と表示されます。 その理由をご存知ですか? –

+0

'dname(item.attrs).get( 'name')'が 'None'を返す箇所を説明するために' if name is None'という行があります。これは '' name ''が' attrs'辞書のキーでないときに正確に発生します。少数のアイテムしか持っていない場合は、それらを手で点検して、その原因を発見することができます。 – bossylobster

関連する問題