У меня есть запрос на python/красивый код супа, который позволяет мне войти в URL-адрес успешно. Однако после входа в систему для получения необходимых мне данных, как правило, необходимо вручную:
1) нажмите "оператор" в первой строке:
2) Выберите даты, нажмите "Запустить отчет":
3) просматривать данные:
Это код, который я использовал для входа в систему, чтобы перейти к шагу 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 выше):
]
Изменить 1: сетевой запрос из загрузки файла csv:
Как рекомендовали другие, Selenium - хороший инструмент для такого рода задач. Тем не менее, я попытаюсь предложить способ использования requests
для этой цели как того, что вы просили в вопросе.
Успех такого подхода будет действительно зависеть от того, как создается веб-страница и как файлы данных становятся доступными (если "Сохранить как CSV" в данных представления - это то, что вы нацеливаете).
Если механизм входа в систему основан на файлах cookie, вы можете использовать сеансы и файлы cookie в запросах. Когда вы отправляете форму для входа, куки файлы возвращаются в заголовках ответов. Вы добавляете cookie для запроса заголовков в любых последующих запросах страницы, чтобы сделать свой логин.
Кроме того, вы должны проверить сетевой запрос для действия "Сохранить как CSV" в сетевой панели "Инструменты разработчика". Если вы можете увидеть структуру запроса, вы можете сделать прямой запрос в своей аутентифицированной сессии и использовать идентификатор оператора и даты в качестве полезной нагрузки для получения ваших результатов.
Используйте selenium webdriver, он имеет много хороших функций для обработки веб-сервисов.
Селен будет лучшим выбором для автоматизированного взаимодействия браузера. Его можно использовать не только для очистки данных с веб-сайтов, но и для взаимодействия с различными формами и т.д. Я очень рекомендовал его, поскольку использовал его в прошлом. Если вы уже установили пип и python, продолжайте и введите
pip установить селен
Это установит селен, но вам также нужно установить либо geckodriver (для Firefox), либо chromedriver (для хром). Тогда вы должны быть запущены и запущены!
https://login.flash.co.za/apex/f
с полезной нагрузкой.