У вас есть интересная проблема: причина того, что ваши фреймы данных показывают NaN
вместо цифр, заключается в том, что после загрузки только часть HTML действительно пуста. Только после запуска скрипта view-section.js
(в вашем локальном браузере) значения заполняются. Таким образом, чтобы получить те же данные из вашего скрипта, вам нужно будет получить те же данные, что и веб-сайт. Грубый набросок:
Получите открытые места для каждой «секции». К счастью, конечная точка openseats.php
принимает массив кодов курсов, таких как:
https://www.bu.edu/phpbin/summer/rpc/openseats.php?sections[]=2020SPRGCASMA124%20B7
(И, очевидно, она возвращает все открытых мест курсов, независимо от того, какой код вы запрашиваете Таким образом, на данный момент достаточно одного запроса.)
В результате получается следующий JSON объект:
{"time_secs":0.20295810699463,"results":{"2020SPRGCASMA124 A1":"133","2020SPRGCASMA124 A2":"133","2020SPRGCASMA124 A3":"134","2020SPRGCASMA124 B1":"60","2020SPRGCASMA124 B2":"60","2020SPRGCASMA124 B3":"60","2020SPRGCASMA124 B4":"40","2020SPRGCASMA124 B5":"60","2020SPRGCASMA124 B6":"60","2020SPRGCASMA124 B7":"60","2020SPRGCASMA193 A1":"100","2020SPRGCASMA213 A1":"112","2020SPRGCASMA213 B1":"23","2020SPRGCASMA213 B2":"23","2020SPRGCASMA213 B3":"22","2020SPRGCASMA213 B4":"22","2020SPRGCASMA213 B5":"22","2020SPRGCASMA213 C1":"37","2020SPRGCASMA213 C2":"37","2020SPRGCASMA213 C3":"38"}}
Преобразуйте его также в DataFrame, и теперь вам просто нужно .join(..)
оба кадра данных. Но подождите, в вашей исходной таблице отсутствуют коды курса crypti c. К сожалению, они появляются только в атрибуте data-section="..."
некоторых ячеек таблицы.
К сожалению, в настоящее время наилучшим доступным способом получения этой информации является анализ HTML самостоятельно. Точка входа: from bs4 import BeautifulSoup
(+ здесь много вопросов по SO).
Надеюсь, это поможет вам начать.