0
<div> <img class="photo" /> text1 </div>
<div> <img class="photo" /> text2 </div>

text1、text2 を取得しようとしています。私はこのようなことを試みますが、失敗します、

for i in test.find_all(class_="photo"):
     print i.parent[1]

エラー:

RuntimeError: maximum recursion depth exceeded

理由はありますか?

4

1 に答える 1

1

これらの場合、次の要素を探しています。

for elem in test.find_all(class_="photo"):
    print elem.next_sibling

親に移動することは機能しますが、.stripped_strings代わりに属性を探します。

for elem in test.find_all(class_="photo"):
    print ' '.join(elem.parent.stripped_strings)

デモンストレーション:

>>> from bs4 import BeautifulSoup
>>> soup = BeautifulSoup('''\
... <div> <img class="photo" /> text1 </div>
... <div> <img class="photo" /> text2 </div>
... ''')
>>> for elem in soup.find_all(class_="photo"):
...     print elem.next_sibling
... 
 text1 
 text2 
>>> for elem in soup.find_all(class_="photo"):
...     print ' '.join(elem.parent.stripped_strings)
... 
text1
text2
于 2013-03-22T12:39:48.850 に答える