como faço para extrair com bela sopa um valor span class aninhada?

votos
-2

Eu estou lutando tentando descobrir o que é o elemento que eu preciso dizer bonito Soup para desfazer o valor tag 'quantidade', que neste exemplo de código é 1,56.

Eu estou colando abaixo de um trecho de código da página Eu quero raspar:

<td class=line-content>
      <span class=html-tag>
       &lt;div
       <span class=html-attribute-name>
        class
       </span>
       ='
       <span class=html-attribute-value>
        the-price
       </span>
       '
       <span class=html-attribute-name>
        style
       </span>
       ='
       <span class=html-attribute-value>
        margin-top:20px;
       </span>
       '&gt;
      </span>
     </td>
    </tr>
    <tr>
     <td class=line-number value=447>
     </td>
     <td class=line-content>
      <span class=html-tag>
       &lt;span
       <span class=html-attribute-name>
        class
       </span>
       ='
       <span class=html-attribute-value>
        currency
       </span>
       '&gt;
      </span>
      <span class=html-tag>
       &lt;/span&gt;
      </span>
      <span class=html-tag>
       &lt;span
       <span class=html-attribute-name>
        class
       </span>
       ='
       <span class=html-attribute-value>
        amount
       </span>
       '&gt;
      </span>
      1,56
      <span class=html-tag>
       &lt;/span&gt;
      </span>
     </td>
    </tr>

Você amavelmente me ilumine? Estou muito grato por qualquer ajuda.

Publicado 03/12/2019 em 00:01
fonte usuário
Em outras línguas...                            


1 respostas

votos
1

Você pode direcionar a quantidade, por exemplo, como este ( dataé o seu string HTML):

from bs4 import BeautifulSoup
soup = BeautifulSoup(data, 'html.parser')

span_with_amount = soup.find(lambda tag: tag.name == 'span' and tag.get_text(strip=True) == 'amount')
value = span_with_amount.parent.find_next_sibling(text=True)
print(value.strip())

Prints:

1,56

Primeiro vamos encontrar <span>com o texto "quantidade" e, em seguida, vamos encontrar o texto que está ao lado do pai deste <span>.

Respondeu 03/12/2019 em 00:53
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more