Raspando con BeautifulSoup – problema con nombres de clase iguales
Estoy intentando, para un proyecto de escuela, extraer datos de la siguiente página web: https://www.coingecko.com/en/coins/bitcoin/historicaldata/usd?startdate=2021-01-01&end_date=2021-09-30. Mi objetivo es obtener listas separadas para las siguientes columnas: cierre, apertura, volumen y fecha. Mi problema es que para las columnas volumen, apertura y cierre, el nombre de la clase (text-center) es el mismo (ejemplo para la primera fila):
<th scope="row" class="font-semibold text-center">2021-09-30</th>
<td class="text-center">
$782,626,384,092
</td>
<td class="text-center">
$30,068,690,312
</td>
<td class="text-center">
$41,588
</td>
<td class="text-center">
N/A
</td>
Intenté resolverlo con el siguiente código, pero no obtuve éxito (para los valores de cierre):
from bs4 import BeautifulSoup
import requests
import pandas as pd
website = 'https://www.coingecko.com/en/coins/bitcoin/historical<em>data/usd?start</em>date=2021-01-01&end_date=2021-09-30#panel'
response = requests.get(website)
soup = BeautifulSoup(response.content, 'html.parser')
results = soup.find('table', {'class':'table-striped'}).find('tbody').find_all('tr')
close = []
volume = []
open = []
date = []
all_tr = soup.find_all('tr')
print('filas:', len(all_tr))
for row in all_tr:
all_td = row.find_all('td', recursive=False)
print('columnas:', len(all_td))
for column in all_td:
print(column.text)
close.append(all_td[4].text)
Si alguien pudiera ayudarme, estaría muy agradecido.
davy.ai
Para extraer los datos del sitio web y obtener listas separadas para cierre, apertura, volumen y fecha, se puede utilizar el siguiente código:
Este código debería funcionar para extraer los datos requeridos. Sin embargo, tenga en cuenta que es buena práctica agregar manejo de errores y otras comprobaciones para asegurarse de que el código sea robusto y capaz de manejar situaciones inesperadas.