Читайте в таблице статистики игры с сайта MLB в Beautiful soup - PullRequest
0 голосов
/ 25 июня 2019

Я пытаюсь почистить / прочитать таблицу 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)

Ответы [ 2 ]

2 голосов
/ 25 июня 2019

Данные загружаются через AJAX. Для правильного источника данных вам нужно найти URL через, например, консоль разработчика в Firefox. Этот скрипт печатает данные JSON плеера 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))
0 голосов
/ 25 июня 2019

Если вы просто хотите получить данные, я бы посоветовал вам поискать существующие API, такие как this , прежде чем пытаться очистить веб-сайт. Скребки подвержены изменениям макета сайта.

- это форум Reddit, который вас может заинтересовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...