Estoy tratando de raspar este sitio web: https://madduxsports.com/college-basketball-lines.php
Soy muy nuevo en python y scraping, creo que este sitio web tiene una tabla generada con JavaScript.
Estoy buscando raspar solo las primeras 7 columnas. He intentado
from requests_html import HTMLSession from bs4 import BeautifulSoup session = HTMLSession() resp = session.get("https://madduxsports.com/college-basketball-lines.php") resp.html.render() soup = BeautifulSoup(resp.html.html, "lxml") script_tags = soup.find_all("script") print(script_tags) Esto obtendrá todo con la etiqueta <script> que contiene los datos de la tabla, pero no sé cómo obtener las primeras 7 columnas.
Gracias por la ayuda
Puede obtenerlo a través de la solicitud directamente (pero deberá manipular un poco los caracteres de escape html y demás. Esto le brinda los mismos datos que si los obtuviéramos de la etiqueta <script> . Puedo mostrar usted también puede obtenerlo de esa manera si lo desea, pero esta es una mejor manera en mi opinión.
import requests import pandas as pd url = 'https://madduxsports.com/newodds/v2/scheduler-ajax.php' payload = { 'timezone': 'America/New_York', 'is_first_request': '0', 'league_id': '4', 'sport_id': '2', 'period_id': '1'} jsonData = requests.post(url, data=payload).json() # Everything above is the to get the data # jsonData is the json you see in the <script> tag odds = jsonData['odds'] schedulers = jsonData['schedulers'] odds_df = pd.json_normalize(odds) schedulers_df = pd.json_normalize(schedulers) names_dict = {} for each in odds: names_dict[each['id']] = each['name'] cols = [] for col in schedulers_df: for k, v in names_dict.items(): col = col.replace(str(k),v) cols.append(col) schedulers_df.columns = cols cols = ['date','team_ids', 'team_names','score.away_score','score.home_score', 'score.description','opener.1.away','opener.1.home'] odds_cols = [x for x in schedulers_df.columns if ('1.away' in x or '1.home' in x) and ('class' not in x)] df = schedulers_df[cols + odds_cols]Producción:
print(df) date team_ids ... odds.SIA.1.away odds.SIA.1.home 0 2021-12-03 00:00:00 306123<br>306124 ... 143½ -1½ 1 2021-12-03 00:00:00 306127<br>306128 ... 142½ 11 2 2021-12-03 00:00:00 306129<br>306130 ... 126½u12 -5½ 3 2021-12-03 00:00:00 306131<br>306132 ... 17 146½ 4 2021-12-03 01:00:00 306133<br>306134 ... -2½ 135½ .. ... ... ... ... ... 107 2021-12-04 07:50:00 396155<br>396156 ... 108 2021-12-04 07:50:00 396157<br>396158 ... 109 2021-12-04 07:50:00 396159<br>396160 ... 110 2021-12-04 07:50:00 9875<br>9876 ... 111 2021-12-04 07:50:00 9877<br>9878 ... [112 rows x 22 columns]