Веб-анализ Python с запросами - после входа в систему

1

У меня есть запрос на python/красивый код супа, который позволяет мне войти в URL-адрес успешно. Однако после входа в систему для получения необходимых мне данных, как правило, необходимо вручную:

1) нажмите "оператор" в первой строке:

Изображение 174551

2) Выберите даты, нажмите "Запустить отчет":

Изображение 174551

3) просматривать данные:

Изображение 174551

Это код, который я использовал для входа в систему, чтобы перейти к шагу 1 выше:

import requests
from bs4 import BeautifulSoup

logurl = "https://login.flash.co.za/apex/f?p=pwfone:login"
posturl = 'https://login.flash.co.za/apex/wwv_flow.accept'

with requests.Session() as s:
    s.headers = {"User-Agent":"Mozilla/5.0"}
    res = s.get(logurl)
    soup = BeautifulSoup(res.text,"html.parser")

    arg_names =[]
    for name in  soup.select("[name='p_arg_names']"):
        arg_names.append(name['value'])

    values = {
        'p_flow_id': soup.select_one("[name='p_flow_id']")['value'],
        'p_flow_step_id': soup.select_one("[name='p_flow_step_id']")['value'],
        'p_instance': soup.select_one("[name='p_instance']")['value'],
        'p_page_submission_id': soup.select_one("[name='p_page_submission_id']")['value'],
        'p_request': 'LOGIN',
        'p_t01': 'solar',
        'p_arg_names': arg_names,
        'p_t02': 'password',
        'p_md5_checksum': soup.select_one("[name='p_md5_checksum']")['value'],
        'p_page_checksum': soup.select_one("[name='p_page_checksum']")['value']
    }
    s.headers.update({'Referer': logurl})
    r = s.post(posturl, data=values)
    print (r.content)

Мой вопрос: (начинающий говорящий), как я могу пропустить шаги 1 и 2 и просто сделать другое обновление заголовков и опубликовать конечный URL, используя выбранные даты в виде записей в форме (заголовки и информация о форме ниже)? (referral header - это шаг 2 выше):

Изображение 174551 ]

Изменить 1: сетевой запрос из загрузки файла csv:

Изображение 174551

Теги:
python-requests
web-scraping
beautifulsoup

3 ответа

0

Как рекомендовали другие, Selenium - хороший инструмент для такого рода задач. Тем не менее, я попытаюсь предложить способ использования requests для этой цели как того, что вы просили в вопросе.

Успех такого подхода будет действительно зависеть от того, как создается веб-страница и как файлы данных становятся доступными (если "Сохранить как CSV" в данных представления - это то, что вы нацеливаете).

Если механизм входа в систему основан на файлах cookie, вы можете использовать сеансы и файлы cookie в запросах. Когда вы отправляете форму для входа, куки файлы возвращаются в заголовках ответов. Вы добавляете cookie для запроса заголовков в любых последующих запросах страницы, чтобы сделать свой логин.

Кроме того, вы должны проверить сетевой запрос для действия "Сохранить как CSV" в сетевой панели "Инструменты разработчика". Если вы можете увидеть структуру запроса, вы можете сделать прямой запрос в своей аутентифицированной сессии и использовать идентификатор оператора и даты в качестве полезной нагрузки для получения ваших результатов.

  • 0
    Благодарю. Я добавил проверку сети загрузки файла CSV. Думаешь выполнимо сделать прямой запрос?
  • 0
    Я думаю, что это выполнимо - используйте сеансы и файлы cookie, а затем используйте BeautifulSoup, чтобы получить ссылку «Сохранить как CSV», и выполните запрос GET по https://login.flash.co.za/apex/f с полезной нагрузкой.
Показать ещё 1 комментарий
0

Используйте selenium webdriver, он имеет много хороших функций для обработки веб-сервисов.

0

Селен будет лучшим выбором для автоматизированного взаимодействия браузера. Его можно использовать не только для очистки данных с веб-сайтов, но и для взаимодействия с различными формами и т.д. Я очень рекомендовал его, поскольку использовал его в прошлом. Если вы уже установили пип и python, продолжайте и введите

pip установить селен

Это установит селен, но вам также нужно установить либо geckodriver (для Firefox), либо chromedriver (для хром). Тогда вы должны быть запущены и запущены!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню