Я пытаюсь почистить / прочитать таблицу Game Stats с веб-сайта игрока MLB (https://www.mlb.com/player/charlie-morton-450203?stats=gamelogs-r-pitching-mlb&year=2019). Мне не удается найти / захватить имя класса. Я вижу имя класса, когда "проверяюHTML "в chrome, но красивый суп, похоже, не находит его.
Есть ли какой-нибудь обходной путь / хитрость, чтобы правильно это сделать?
from bs4 import BeautifulSoup import requests page = requests.get('https://www.mlb.com/player/charlie-morton-450203?stats=gamelogs-r-pitching-mlb&year=2019') soup = BeautifulSoup(page.text, "html.parser") body = soup.find('body') table = body.findAll('div', {'class':'gamelogs-table'}) print(table)
Данные загружаются через AJAX. Для правильного источника данных вам нужно найти URL через, например, консоль разработчика в Firefox. Этот скрипт печатает данные JSON плеера 450203:
450203
import requests import json url = 'https://statsapi.mlb.com/api/v1/people/450203/stats?stats=gameLog' data = requests.get(url).json() print(json.dumps(data, indent=4))
Если вы просто хотите получить данные, я бы посоветовал вам поискать существующие API, такие как this , прежде чем пытаться очистить веб-сайт. Скребки подвержены изменениям макета сайта.
- это форум Reddit, который вас может заинтересовать.