2017-03-21 4 views
0

これは初めてBeautifulSoupを使用しています。美しいスープを使って異なる出力/クラスの複数の同じタグを印刷するには

私がこれまで

<div class='ts'>2012-03-14 09:17:55.433 +0300&nbsp;</div><div class='log'>No Error</div> 
<div class='ts'>2012-03-14 12:18:55.433 +0300&nbsp;</div><div class='log'>Error: Missing module.</div> 

端末に私のコードを私はlogdivタグとクラスtsを持つすべての行を見つけて、このような結果を印刷するこのtest.html

<html> 
<body> 
<div class='ts'>2012-03-14 09:17:55.433 +0300&nbsp;</div><div class='log'>No Error</div> 
<div class='ts'>2012-03-14 12:18:55.433 +0300&nbsp;</div><div class='log'>Error: Missing module.</div> 
</body> 
</html> 

を持っています

from bs4 import BeautifulSoup 

soup = BeautifulSoup(open("test.html")) 

def find_ts_and_log(): 
    items = soup.select('div.ts') + soup.select('div.log') 
    for item in items: 
     print item 

find_ts_and_log() 

このスクリプトは私にこの結果を与えました

<div class='ts'>2012-03-14 09:17:55.433 +0300&nbsp;</div> 
<div class='ts'>2012-03-14 12:18:55.433 +0300&nbsp;</div> 
<div class='log'>No Error</div> 
<div class='log'>Error: Missing module.</div> 

ありがとうございます。

答えて

1

あなたはclass_フィルタでfind_all()を使用することができます:あなたは、あなたの実際のコードではあります:

items = soup.find_all('div', class_=['ts','log']) 
for item in items: 
    print item 

それとも、div.ts最初にしてnext_siblingプロパティからlogを対応する取得見つけることができます:OPに

items = soup.select('div.ts') 
for item in items: 
    print item, item.next_sibling 
+0

'item'が' next_sibling'を持っているかどうかを調べる必要があり、もしそれがあるならば、兄弟タグ名とクラス属性値をチェックする必要があります(兄弟がセレクタ 'div.log'を満たしているかどうかを確認してください)... – har07

+0

助けてくれてありがとう。あなたの2番目の提案は私のために働く。 – Ling

関連する問題