Спарсить страницу с помощью pandas
На сайте нет никаких классов в элементах, а просто сплошные таблицы. Мне нужно получить отдельные данные из таблицы. При записи у меня получается кривой текст, из которого ничего не получить толком. Вот код:
import pandas as pd
import requests
url = 'https://lk.ks.psuti.ru/?mn=2&obj=12&wk=143'
source = requests.get(url).text
data = pd.read_html(source)
dt = pd.DataFrame(data)
dt.to_csv('pg.csv')
Ответы (2 шт):
Автор решения: CrazyElf
→ Ссылка
В data у вас просто получается список датафреймов. Можете посмотреть по очереди что там:
for df in data:
print(df)
А можете просто взять нужный датафрейм по индексу и работать с ним:
df = data[0] # первая таблица
Автор решения: Алексей Р
→ Ссылка
На странице 32 таблицы. Судя по наполнению, нужна 4-я. Ряд значений дублируется, поскольку есть объединенные ячейки. Также целесообразно очистить фрейм от пустых значений. requests здесь не требуется.
Попробуйте так:
import pandas as pd
url = 'https://lk.ks.psuti.ru/?mn=2&obj=12&wk=143'
data = pd.read_html(url)
df = data[4].dropna(how='all', axis=0).fillna('')
print(df)
0 1 2 3 4 5 6
0 ПКС-30 ПКС-30 ПКС-30 ПКС-30 ПКС-30 ПКС-30 ПКС-30
2 Понедельник 26.09.2022 / 4 неделя Понедельник 26.09.2022 / 4 неделя Понедельник 26.09.2022 / 4 неделя Понедельник 26.09.2022 / 4 неделя Понедельник 26.09.2022 / 4 неделя Понедельник 26.09.2022 / 4 неделя Понедельник 26.09.2022 / 4 неделя
3 № пары Время занятий Способ Дисциплина, преподаватель Тема занятия Ресурс Задание для выполнения
4 2 09:40 – 11:10 Замена МДК.В.01.03 ВП (Шомас Е.А.) на:МДК.В.02...
5 3 11:40 – 13:10 Очно Безопасность и управление доступом в компьютер... Тема 2.1 Основные подходы к созданию защиты АИС Тема Подготовиться к тесту по прошедшим темам
6 4 13:20 – 14:50 Очно МДК.02.02 Технология разработки и защиты баз д... Практическое занятие №4Построение схем баз дан... практическое занятие №4 Построение схем баз да...
...
