Python:在异常离开导致异常的行之后重试

时间:2015-09-16 15:12:21

标签: python beautifulsoup

我是Python新手。我正在使用BeautifulSoup - python模块。如果它存在,我必须查找并获取任何id MathJax-Element-1, MathJax-Element-2, MathJax-Element-3, MathJax-Element-4,….等文本的文本。

我的代码是

from bs4 import BeautifulSoup
soup = BeautifulSoup(html_doc, 'html.parser')
attempts = 0
a=-1

while attempts < 100:
    try:
        a+=1
        math="MathJax-Element-"
        math +=`a`
        soup=(soup.find(id=math))
        print(soup.get_text())
        attempts = 0
    except AttributeError:
        attempts +=1

但在属性错误后代码失败。例如,如果没有id MathJax-Element-2,那么我没有得到任何id的文本,例如MathJax-Element-3和MathJax-Element-4

在异常后尝试离开导致异常的行,即soup=(soup.find(id=math))

我的代码出了什么问题?

1 个答案:

答案 0 :(得分:2)

    soup=(soup.find(id=math))
    print(soup.get_text())

这些行使用HTML元素覆盖现有的soup BeautifulSoup对象,该元素没有find方法。这意味着soup.find将在第一次迭代后的每次迭代中始终失败。

尝试使用其他变量名称。

    element=(soup.find(id=math))
    print(element.get_text())