Я пытаюсь извлечь весь график и результаты международного турнира Dota2 TI9 из этой страницы . Информация, которую я ищу, находится под тегом и под «schedule_data».
Пока это то, что я получил
import requests, re, json
from bs4 import BeautifulSoup as bs
url = 'http://www.dota2.com/international/schedule/0/0/?l=english'
page = requests.get(url)
soup = bs(page.text,'html.parser')
all_javascript = soup.find_all(name='script',type='text/javascript')
all_javascript[:] = [x for x in all_javascript if(re.search("schedule_data",x.text))]
data = all_javascript[0]
new_data = json.loads(data.text)
Я нахожу все теги 'script' и затем ищу шаблон «schedule_data» для определения тега, который мне нужен. Однако теперь последняя строка завершается с ошибкой
new_data = json.loads(data.text)
Traceback (most recent call last):
File "<ipython-input-68-447d26a16d5b>", line 1, in <module>
new_data = json.loads(data.text)
File "C:\Users\templ\Anaconda3\lib\json\__init__.py", line 348, in loads
return _default_decoder.decode(s)
File "C:\Users\templ\Anaconda3\lib\json\decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "C:\Users\templ\Anaconda3\lib\json\decoder.py", line 355, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
JSONDecodeError: Expecting value
Я посмотрел решение здесь json загружает пример , Здесь и здесь , но ни один из них не решает проблему. Эти примеры, кажется, предполагают, что это ошибка запроса URL или ошибка перевода, которая приводит к ошибке загрузки json, но у меня нет ни одного из них.
print(type(data.text))
возвращает str для меня, который, как я понимаю, является правильным типом данных для json загрузок.
Пожалуйста, помогите