Создание приложения расписания для моего расписания университета - PullRequest
0 голосов
/ 17 марта 2020

Я пытаюсь создать приложение для своего расписания в университете, поскольку наш школьный веб-сайт не предоставляет визуализированное расписание, а примерно так:

описание зарегистрированных курсов

Имея это в виду, я уже начал этот проект и перечислил шаги, которые мне нужно предпринять, чтобы завершить его.

  1. Напишите функцию, которая регистрируется на веб-сайте школы
  2. Напишите функцию, которая сохраняет файл HTML, который включает описание зарегистрированных курсов
  3. Напишите функцию который очищает данные из файла HTML и сохраняет необходимые данные в такие поля, как COURSE_ID, COURSE_LOCATION, COURSE_STARTTIME, COURSE_ENDTIME и др. c ..
  4. Напишите функцию, которая создает визуализированное расписание с этими полями в качестве параметров

Из этих четырех обобщенных этапов я завершил третий этап, который представляет собой фрагмент данных. Однако я столкнулся с некоторыми проблемами и не мог понять, как выполнить шаг 1. Мне было интересно, может ли кто-нибудь помочь мне здесь.

Чтобы предоставить более подробную информацию c, ссылка на школьный сайт: https://ics.twu.ca/ICS/. Отсюда я не знаю, как написать скрипт, который может запросить URL и сделать запрос POST с именем пользователя и паролем.

Я пишу эту программу на Python.

1 Ответ

0 голосов
/ 18 марта 2020

Запрос аутентификации - это POST на https://ics.twu.ca/ICS/. Получить все input пары имя / значение со страницы, использовать сеанс для записи файлов cookie. В этой форме используется multipart/form-data, поэтому используйте параметр files.

import requests
from bs4 import BeautifulSoup

url = "https://ics.twu.ca/ICS/"

username = "your_username"
password = "your_password"

session = requests.Session()

r = session.get(url)

soup = BeautifulSoup(r.text, "html.parser")

payload = dict((x, (None, y)) for x, y in [
    (i["name"], i.get("value"))
    for i in soup.find_all("input")
])

payload["userName"] = username
payload["password"] = password

print(payload)

r = session.post(url, files = payload)

print(r.text)

В приведенном выше примере payload - это словарь входного значения с кортежем (None, value), поскольку мы нам не нужна переменная имени файла (мы не загружаем файлы, а просто отправляем значения). Проверьте this

Если это не работает, добавьте заголовки, такие как user-agent

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