Я пытаюсь извлечь данные таблицы с этого веб-сайта - 'https://understat.com/league/EPL' Когда я просматривал исходный код, таблица сохраняется в формате. Я хочу знать, как извлечь данные из скрипта в удобном формате.
Я попытался использовать решение из аналогичного вопроса ( Как получить переменные тега скрипта с веб-сайта, используя Python):
import requests
import bs4
import json
url = 'https://understat.com/league/EPL'
r = requests.get(url)
bs = bs4.BeautifulSoup(r.text, "html.parser")
scripts = bs.find_all('script')
for s in scripts:
if 'var datesData' in s.text:
script = s.text
print(script)
Однако ничего не печатается, то есть он не может найти 'var dateData' в скрипте, но когда я просто печатаю (скрипты), я получаю:
[<script>
var THEME = localStorage.getItem("theme") || 'DARK';
document.body.className = "theme-" + THEME.toLowerCase();
</script>,
<script>
var datesData = JSON.parse('\x5B\x7B\x22id\x22\x3A\x2211643\x22,\x22isResult\x22\x3Atrue,\x22h\x22\x3A\x7B\x22id\x22\x3A\x2287\x22,\x22title\x22\x3A\x22Liverpool\x22,\x22short_title\x22\x3A\x22LIV\x22\x7D,\x22a\x22\x3A\x7B\x22id\x22\x3A\x2279\x22,\x22title\x22\x3A\x22Norwich\x22,\x22short_title\x22\x3A\x22NOR...
and so on
]
Как видите, второй список содержит 'var dateData', но мой код не печатает его.
Я хочу получить этот второй сценарий из списка и получить данные в JSON .parse (), чтобы я мог в конечном итоге создать фрейм данных. Один из вариантов, который я могу сделать, - скопировать всю эту строку из исходного кода URL-адреса и передать ее в json .loads (), чтобы использовать ее, например:
js = json.loads('\x5B\x7B\x22id\x22\x3A\x2211643\x22,\x22isResult\x22\x3Atrue,\x22h\x22\...')
, что дает мне результат:
[{'id': '11643',
'isResult': True,
'h': {'id': '87', 'title': 'Liverpool', 'short_title': 'LIV'},
'a': {'id': '79', 'title': 'Norwich', 'short_title': 'NOR'},
'goals': {'h': '4', 'a': '1'},
'xG': {'h': '2.23456', 'a': '0.842407'},
'datetime': '2019-08-09 20:00:00',
'forecast': {'w': '0.7377', 'd': '0.1732', 'l': '0.0891'}},
{'id': '11644',
'isResult': True,
'h': {'id': '81', 'title': 'West Ham', 'short_title': 'WHU'},
'a': {'id': '88', 'title': 'Manchester City', 'short_title': 'MCI'},
'goals': {'h': '0', 'a': '5'},
'xG': {'h': '1.2003', 'a': '3.18377'},
'datetime': '2019-08-10 12:30:00',
'forecast': {'w': '0.0452', 'd': '0.1166', 'l': '0.8382'}},
{'id': '11645',
'isResult': True,
...
Однако лучший способ - вызвать данные с веб-сайта, чтобы я мог учесть изменения, которые БУДУТ произойти позже с данными.
TL; DR: я хочу прочитать данные, хранящиеся в тег скрипта в читаемом формате с использованием Python