Actualizando el dolar BNA - Librería BeautifulSoup

Gustavo Orrillo
- 15/09/2022 - 1 min. de lectura

Muchas empresas necesitan actualizar el valor del dolar con el valor del BNA, y necesitan que dicha actualización sea automática. Lamentablemente el BNA no provee un webservice para ello pero por suerte su página es sencilla que se puede analizar con BeautifulSoup


y su examinamos su código HTML es

<tbody>
    <tr>
        <td class="tit">Dolar U.S.A</td>
        <td>141,0000</td>
        <td>149,0000</td>
    </tr>
    <tr>
        <td class="tit">Euro</td>
        <td>141,0000</td>
        <td>149,0000</td>
      </tr>
       <tr>
            <td class="tit">Real *</td>
            <td>2520,0000</td>
            <td>2920,0000</td>
        </tr>
</tbody> 
Para ello desarrollamos un módulo llamado odoo_dolarbna. El mismo se instala como cualquier módulo, y solo requiere dos configuraciones. La primera es crear una acción planificada para el objeto res.currency (Moneda) que invoque el método model.update_dolarbna(). Por otra parte se debe agregar un parámetro llamado dolar_bna con el valor de la página del BNA

Aspectos técnicos

Este módulo usa la librería BeautifulSoup. Esta librería permite analizar los contenidos de una página web. Lo que hacemos es por medio de la librería requests procesamos la página de BNA,

page = requests.get(dolarbna_url)

Para luego trabajar con el ID billetes de la página

soup = BeautifulSoup(page.content, "html.parser")
results = soup.find(id="billetes")

Luego tomamos el valor de la segunda columna de la primer fila. De ahí extraemos la directiva TD y convertimos el valor a float

tds = results.find_all("td",class_=False)
if len(tds) < 2:
    raise ValidationError('No se puede determinar el dolar BNA #1')
value = tds[1].text
value = value.replace('<td>','')
value = value.replace('</td>','')
value = float(value.replace(',','.'))

Por último, se busca la moneda USD y el tipo de cambio para el día de la fecha. Si el tipo de cambio no existe, se procede a crearlo.

Acerca de:

Gustavo Orrillo

Passionate about programming, he has implemented Odoo for different types of businesses since 2010. In Moldeo Interactive he is a founding Partner and Programmer; In addition to writing on the Blog about different topics related to the developments he makes.