使用BeautifulSoup在标签之间获取文本

时间:2013-03-22 12:36:56

标签: python beautifulsoup

<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

知道为什么吗?

1 个答案:

答案 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