1
resposta

Quando uso o find no anuncio n funciona apenas no soup

html = response.read().decode('utf-8')
soup = BeautifulSoup(html, 'html.parser')
soup
cards= []
card= []
anuncio = soup.findAll('div', {'class': 'well card'})
anuncio
anuncio.find('div', {'class': 'value-card'})
out: ---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-68-2c11f58bf016> in <module>
----> 1 anuncio.find('div', {'class': 'value-card'})

~\anaconda3\lib\site-packages\bs4\element.py in __getattr__(self, key)
   2079         """Raise a helpful exception to explain a common code fix."""
   2080         raise AttributeError(
-> 2081             "ResultSet object has no attribute '%s'. You're probably treating a list of elements like a single element. Did you call find_all() when you meant to call find()?" % key
   2082         )

AttributeError: ResultSet object has no attribute 'find'. You're probably treating a list of elements like a single element. Did you call find_all() when you meant to call find()?

quando coloco o anuncio.find ele n funciona,

1 resposta

Boa noite Caio, tudo bem?

Então, quando vc cria a variável anuncio aqui:

anuncio = soup.findAll('div', {'class': 'well card'})

essa função retorna uma lista com todas as div que tenha class = well card

E listas não têm a função .find().

O que vc tá querendo é usar essa função aos elementos que estão nessa lista. Então tenta usar um for que leia todos os elementos dessa lista anuncio. Algo do tipo: (Obs: Eu troquei o nome da variável anuncio para anuncios pois acho que fica mais legível o código. Afinal, como já foi dito, é uma lista de anúncios, certo?)

anuncios = soup.findAll('div', {'class': 'well card'})
for elemento in anuncios:
    print(elemento.find('div', {'class': 'value-card'}))

E segue a partir daí... Provavelmente vc irá pegar algum texto dessa div, então acho q um .getText() no final da última linha resolveria se assim fosse. E claro, vc vai precisar armazenar esses valores. Eu só dei um print() pra exemplificar.

Espero ter ajudado! Se ainda ficou alguma dúvida, chama nóis!

Bons estudos.