我怎样才能覆盖 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)
我正在尝试覆盖 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)