Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

soup.find_all

Por que o primeiro código retorna apenas os txt-value do p e o segundo codigo retorna o alt, height, src, width...???

print(soup.find_all('p', class_ = "txt-value"))
print(soup.find_all('img', alt='Foto'))

Resultados:

[<p class="txt-value">R$ 338.000</p>, <p class="txt-value">R$ 346.000</p>, <p class="txt-value">R$ 480.000</p>, <p class="txt-value">R$ 133.000</p>, <p class="txt-value">R$ 175.000</p>, <p class="txt-value">R$ 239.000</p>, <p class="txt-value">R$ 115.000</p>, <p class="txt-value">R$ 114.000</p>, <p class="txt-value">R$ 75.000</p>, <p class="txt-value">R$ 117.000</p>]
[<img alt="Foto" height="155" src="https://caelum-online-public.s3.amazonaws.com/1381-scraping/01/img-cars/lamborghini-aventador/lamborghini-aventador-2932196__340.jpg" width="220"/>, <img alt="Foto" height="155" src="https://caelum-online-public.s3.amazonaws.com/1381-scraping/01/img-cars/bmw-m2/bmw-m2-2970882__340.jpg" width="220"/>, <img alt="Foto" height="155" src="https://caelum-online-public.s3.amazonaws.com/1381-scraping/01/img-cars/alfa/alfa-1823056__340.jpg" width="220"/>, <img alt="Foto" height="155" src="https://caelum-online-public.s3.amazonaws.com/1381-scraping/01/img-cars/puech/puech-4055386__340.jpg" width="220"/>, <img alt="Foto" height="155" src="https://caelum-online-public.s3.amazonaws.com/1381-scraping/01/img-cars/lamborghini-murcielago/lamborghini-murcielago-2872974__340.jpg" width="220"/>, <img alt="Foto" height="155" src="https://caelum-online-public.s3.amazonaws.com/1381-scraping/01/img-cars/aston-martin/aston-martin-2977916__340.jpg" width="220"/>, <img alt="Foto" height="155" src="https://caelum-online-public.s3.amazonaws.com/1381-scraping/01/img-cars/tvr/tvr-2943925__340.jpg" width="220"/>, <img alt="Foto" height="155" src="https://caelum-online-public.s3.amazonaws.com/1381-scraping/01/img-cars/excalibur/excalibur-2916730__340.jpg" width="220"/>, <img alt="Foto" height="155" src="https://caelum-online-public.s3.amazonaws.com/1381-scraping/01/img-cars/mclaren/mclaren-2855240__340.jpg" width="220"/>, <img alt="Foto" height="155" src="https://caelum-online-public.s3.amazonaws.com/1381-scraping/01/img-cars/toyota/toyota-3245397__340.jpg" width="220"/>]
1 resposta
solução!

Oii Leonardo, tudo bem com você?

Quando fazemos:

soup.find_all('p', class_ = "txt-value")

Resultado:

[<p class="txt-value">R$ 338.000</p>,
 <p class="txt-value">R$ 346.000</p>,
 <p class="txt-value">R$ 480.000</p>,
 <p class="txt-value">R$ 133.000</p>,
 <p class="txt-value">R$ 175.000</p>,
 <p class="txt-value">R$ 239.000</p>,
 <p class="txt-value">R$ 115.000</p>,
 <p class="txt-value">R$ 114.000</p>,
 <p class="txt-value">R$ 75.000</p>,
 <p class="txt-value">R$ 117.000</p>]

Nosso scraping vai retornar todas as tags p que tenham como atributo a classe "txt_value", ou seja, ele não vai retornar apenas o nome da classe, mas as tags inteiras, com todas suas informações. Observe que, como resultado do find_all acima, é apresentado apenas o atributo "class" porque, no html do site em questão, todas as tags p que possuem a classe "txt-value" possuem apenas esse atributo class. Se elas possuíssem mais algum atributo, esse também seria apresentado.

Ou seja, se no nosso html tivesse mais alguma tag p com a class "txt-value" e com algum outro atributo além do "class", como por exemplo id:

<p class="txt-value" id="2">R$ 50.000</p>

Ela também seria apresentada por inteiro (inclusive com o atributo id) como resultado do soup.find_all('p', class_ = "txt-value") porque ela apresenta o atributo class="txt-value".

Dessa forma, o mesmo vale para a tag img. Quando fazemos:

soup.find_all('img', alt='Foto')

Teremos como retorno, todas as tags completas que possuem o atributo alt='Foto', independente dessas tags possuírem ou não outras informações como src, height e width.

Espero que tenha conseguido te ajudar. Qualquer dúvida me avisa :)

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!