Estoy tratando de anular el mensaje AttributeError, para que no me dé el mensaje de error y simplemente continúe con el script. El script encuentra e imprime el nombre de office_manager, pero en algunas ocasiones no hay un administrador en la lista, por lo que necesito ignorar esas ocasiones. ¿Alguien puede ayudar?
for office_manager in soup.find(text="Office_Manager").findPrevious('h4'):
try:
print(office_manager)
except AttributeError:
continue
finally:
print("none")
3 respuestas
Con bs4 4.7.1. puedes usar :contains, :has and :not
. Lo siguiente imprime los nombres de los directores (si no hay directores, obtendrá una lista vacía)
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)
Pensé que alguien menos perezoso que yo convertiría mi comentario en una respuesta, pero como no, aquí tienes:
for office_manager in soup.find(text="Office_Manager").findPrevious('h4'):
try:
print(office_manager)
except AttributeError:
pass
finally:
print("none")
Usar pass
omitirá la entrada en su lugar.
Dado que el error vino de .find, entonces debería ser el que esté en la captura de prueba, o incluso mejor, debería ser así.
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)
Preguntas relacionadas
Nuevas preguntas
python
Python es un lenguaje de programación multipropósito, de tipificación dinámica y de múltiples paradigmas. Está diseñado para ser rápido de aprender, comprender y usar, y hacer cumplir una sintaxis limpia y uniforme. Tenga en cuenta que Python 2 está oficialmente fuera de soporte a partir del 01-01-2020. Aún así, para preguntas de Python específicas de la versión, agregue la etiqueta [python-2.7] o [python-3.x]. Cuando utilice una variante de Python (por ejemplo, Jython, PyPy) o una biblioteca (por ejemplo, Pandas y NumPy), inclúyala en las etiquetas.