"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Por que funções do BeautifulSoup como `find` e `select_one` retornam `None`?

Por que funções do BeautifulSoup como `find` e `select_one` retornam `None`?

Publicado em 2024-11-22
Navegar:946

Why do BeautifulSoup functions like `find` and `select_one` return `None`?

Por que as funções do BeautifulSoup às vezes retornam None

No BeautifulSoup, funções que procuram um único resultado, como find e select_one, retornam None se nenhum elemento correspondente for encontrado em o HTML. Isso leva a exceções AttributeError se o código subsequente tentar usar esses valores None como se fossem elementos reais.

Exemplos de retornos None

Considere o seguinte trecho de código:

html_doc = "..."
soup = BeautifulSoup(html_doc, 'html.parser')
print(soup.sister)
print(soup.find('a', class_='brother'))
print(soup.select_one('a.brother'))
soup.select_one('a.brother').text
  • soup.sister: Retorna None porque não há tag no HTML.
  • soup.find('a', class_='brother'): Retorna None porque não há tags com um atributo de classe de "irmão."
  • soup.select_one('a.brother'): Retorna None pelo mesmo motivo que sopa.find(...).
  • soup.select_one('a.brother').text: Gera um AttributeError porque None não tem texto atributo.

Como evitar AttributeError: o objeto 'NoneType' não tem atributo...

Para evitar exceções de AttributeError, é essencial tratar os retornos de None normalmente. Aqui estão algumas práticas recomendadas:

  • Use instruções condicionais para verificar se o resultado é Nenhum antes de tentar acessar os atributos.
  • Atribua o resultado a uma variável e use .has_attr() para verifique a existência de um atributo específico.
  • Utilize os blocos try e except para capturar exceções AttributeError.
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3