Я пытаюсь автоматизировать загрузку отчета, сначала войдя в систему с именем пользователя и паролем, а затем отправив следующий запрос POST.
Я не хочу использовать запрос GET, так как при этом мои учетные данные отображаются в URL, а история сохраняется в браузере.Кроме того, URL не заканчивается на «.csv», поэтому я не могу передать его непосредственно в pd.read_csv («www.something.csv»).
Я потратил много времени на просмотр ссылок, и следующий, кажется, то, что мне нужно, но мой CSV не находится в web_return.content.
HTTPS POST-запрос Python, возвращающий .csv
report_id = '45'
payload = {'un': 'user.com',
'pw': 'password',
'export': 'Export',
'enc': 'UTF-8',
'xf': 'localecsv',
'colDt_s': '1/1/2018',
'colDt_e': '1/1/2019'}
web_return = requests.post('https://website.com/{}'.format(report_id),
data=payload).content
print(web_return)
df = pd.read_csv(io.StringIO(web_return.decode('utf-8')))
Я хочу, чтобы df в конце был результирующим CSV как кадр данных pandas.У меня это работает по-другому, но я чувствую, что это то, что я должен быть в состоянии сделать, и я хочу сделать это правильно.Токовый вывод действительно является кадром данных, но не является правильным содержимым:
print(df)
0 <html>
1 <head>
2 <meta HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE">
3 <script>
4 if (this.SfdcApp && this.SfdcApp.projectOneNav...
5 if (window.location.replace){
6 window.location.replace('https://login.website...
7 } else {;
8 window.location.href ='https://login.website...
9 }
10 </script>
11 </head>
12 </html>
13 <!-- Body events -->
14 <script type="text/javascript">function bodyOn...
15 </body>
16 </html>
17 <!--
18 .................................................
19 .................................................
20 .................................................
21 .................................................
22 -->
Любая помощь?
Спасибо миллион.
- Обновление, благодаря @Barmar, я смог отправить свой запрос в Javascript, но он говорит мне, что у меня не включен Javascript:
!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<meta HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE">
</head>
<body>
<script>var tm=null;function lhdoredir(){tm&& .
(window.clearTimeout(tm),tm=null);window.location.replace? window.location.replace("https://login.website.com/45"):window.location.href="https://login.website.com/45"}window.setTimeout?tm=window.setTimeout(lhdoredir,1E3):lhdoredir()
You do not have Javascript enabled. Javascript is required to use
website.com. Please enable Javascript, then click <a
href="https://login.website.com/45">here</a> to continue.
</noscript>
<!-- service is in read write mode -->
</body>
</html>