<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
知道为什么吗?
答案 0 :(得分: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