我怎样才能覆盖 AttributeError 让我的脚本继续

How can I override the AttributeError to make my script continue

我正在尝试覆盖 AttributeError 消息,这样它就不会给我错误消息并继续执行脚本。该脚本找到并打印 office_manager 名称,但在某些情况下没有列出经理,因此我需要它来忽略这些情况。有人可以帮忙吗?

for office_manager in soup.find(text="Office_Manager").findPrevious('h4'):
    try:
        print(office_manager)
    except AttributeError:
        continue
    finally:
        print("none")

我以为没有比我懒惰的人会把我的评论转化为答案,但事实并非如此,给你:

for office_manager in soup.find(text="Office_Manager").findPrevious('h4'):
    try:
        print(office_manager)
    except AttributeError:
        pass
    finally:
        print("none")

使用 pass 将跳过条目。

使用 bs4 4.7.1。你可以使用 :contains, :has and :not。以下打印董事姓名(如果没有董事,您将得到一个空列表)

import requests
from bs4 import BeautifulSoup as bs

r = requests.get('https://beta.companieshouse.gov.uk/company/00930291/officers')
soup = bs(r.content, 'lxml')
names = [item.text.strip() for item in soup.select('[class^=appointment]:not(.appointments-list):has([id^="officer-role-"]:contains(Director)) h2')]
print(names)

既然错误来自于.find,那么应该是在try catch上的,最好是这样。

try:
    office_manager = soup.find(text="Office_Manager").findPrevious('h4')
except AttributeError as err:
    print(err) # or print("none")
    pass # return or continue
else:
   for title in office_manager:
       print(title)